JavaScript中用"=="還是"==="解答
來源:懂視網(wǎng)
責(zé)編:小采
時(shí)間:2020-11-27 20:30:49
JavaScript中用"=="還是"==="解答
JavaScript中用"=="還是"==="解答:絕大多數(shù)場(chǎng)合應(yīng)該使用 === ,只有檢測(cè) null/undefined 的時(shí)候可以使用 x == null ,因?yàn)橥ǔN覀儾粎^(qū)分 null 和 undefined ,即將 x == null 作為 x === null x === undefined 的縮寫。== 的比較看似會(huì)比較方便,比如 1 == '1
導(dǎo)讀JavaScript中用"=="還是"==="解答:絕大多數(shù)場(chǎng)合應(yīng)該使用 === ,只有檢測(cè) null/undefined 的時(shí)候可以使用 x == null ,因?yàn)橥ǔN覀儾粎^(qū)分 null 和 undefined ,即將 x == null 作為 x === null x === undefined 的縮寫。== 的比較看似會(huì)比較方便,比如 1 == '1

絕大多數(shù)場(chǎng)合應(yīng)該使用 === ,只有檢測(cè) null/undefined 的時(shí)候可以使用 x == null ,因?yàn)橥ǔN覀儾粎^(qū)分 null 和 undefined ,即將 x == null 作為 x === null || x === undefined 的縮寫。
== 的比較看似會(huì)比較方便,比如 1 == '1' ,但是會(huì)埋下隱患,比如可能對(duì)類型做出錯(cuò)誤的假設(shè)。
例子:
if (x == 10) x += 5 www.2cto.com
如果傳入的x是字符串'10',x的結(jié)果會(huì)變成'105'。在后續(xù)運(yùn)算中字符串'105'又可能被轉(zhuǎn)型,從而引入隱蔽的錯(cuò)誤。
另外,程序員可能不自覺的依賴某些假設(shè)——比如相等比較應(yīng)該具有傳遞性,即 a = b, b = c,應(yīng)該能得出 a = c。但是JavaScript的 == 不具有傳遞性。比如 0 == '0' ,0 == '',但是 '0' != '' 。
所以 JS的 == 并非是 Java/C# 的 equals() ,因?yàn)?Java/C# 語(yǔ)言都是要求 equals() 必須保證傳遞性的。
總之,對(duì)于大型編程來說,== 的這點(diǎn)小小的便利性無(wú)法與其帶來的風(fēng)險(xiǎn)相比。
建議:
忘掉==, 只用===。 ==是個(gè)design失誤。它會(huì)嘗試進(jìn)行類型轉(zhuǎn)換(不是java的equal,它是well defined),類型轉(zhuǎn)換的規(guī)則不好記。并且還破壞傳遞性。
只用===,!==,你寫javascript的日子會(huì)舒服一點(diǎn)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
JavaScript中用"=="還是"==="解答
JavaScript中用"=="還是"==="解答:絕大多數(shù)場(chǎng)合應(yīng)該使用 === ,只有檢測(cè) null/undefined 的時(shí)候可以使用 x == null ,因?yàn)橥ǔN覀儾粎^(qū)分 null 和 undefined ,即將 x == null 作為 x === null x === undefined 的縮寫。== 的比較看似會(huì)比較方便,比如 1 == '1