首頁  >  文章  >  web前端  >  JavaScript 中用"=="還是"===" 解答

JavaScript 中用"=="還是"===" 解答

高洛峰
高洛峰原創
2016-11-26 13:19:201286瀏覽

絕大多數場合應該使用=== ,只有檢測null/undefined 的時候可以使用x == null ,因為通常我們不區分null 和undefined ,即將x == null 作為x === null || x == = undefined 的縮寫。

== 的比較看似會比較方便,例如 1 == '1' ,但是會埋下隱患,例如可能對類型做出錯誤的假設。

範例:
if (x == 10) x += 5  www.2cto.com

如果傳入的x是字串'10',x的結果會變成'105'。在後續運算中字串'105'又可能被轉型,從而引入隱藏的錯誤。

 

另外,程式設計師可能不自覺的依賴某些假設-例如相等比較應該具有傳遞性,即 a = b, b = c,應該能得出 a = c。但是JavaScript的 == 不具有傳遞性。例如 0 == '0' ,0 == '',但是 '0' != '' 。

所以 JS的 == 並非是 Java/C# 的 equals() ,因為 Java/C# 語言都是要求 equals() 必須保證傳遞性的。

總之,對於大型程式來說,== 的這點小小的便利性無法與帶來的風險相比。

 

建議:

忘記==, 只用===。 ==是個design失誤。它會嘗試進行類型轉換(不是java的equal,它是well defined),類型轉換的規則不好記。並且還破壞傳遞性。
只用===,! ==,寫javascript的日子會舒服一點


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn