Javascript學習筆記之相等符號與嚴格相等符號
Javascript 有兩種方法來判斷兩種值是否相等。
相等符號
相等符號由兩個等號組成: ==
Javascript 是弱類型語言。這就意味著相等符號為了比較兩個值將會強制轉(zhuǎn)換類型。
"" == "0" // false
0 == "" // true
0 == "0" // true
false == "false" // false
false == "0" // true
false == undefined // false
false == null // false
null == undefined // true
" \t\r\n" == 0 // true
上面的代碼展示了類型轉(zhuǎn)換的結(jié)果,因此我們知道使用相等符號 == 是個不好的編程習慣。由于 Javascript 中復(fù)雜的類型轉(zhuǎn)換機制,將會使得由此產(chǎn)生的錯誤變得難以追蹤。
此外,類型的強制轉(zhuǎn)換會對性能也造成一定的影響,例如,當一個字符串與數(shù)字進行比較時,會被強制轉(zhuǎn)換為數(shù)字。
嚴格相等符號
嚴格相等符號由三個等號組成: ===
它跟相等符號的操作相似,但是嚴格相等符號不會做強制類型轉(zhuǎn)換的操作。
"" === "0" // false
0 === "" // false
0 === "0" // false
false === "false" // false
false === "0" // false
false === undefined // false
false === null // false
null === undefined // false
" \t\r\n" === 0 // false
上面的代碼使得代碼更加清晰,如果兩個值的類型不同則直接返回 false,這也會使得性能得到提升。
比較對象
盡管 == 和 === 被稱為相等符號,但是當比較的兩個值中有一個類型是對象時,表現(xiàn)將大不相同。
{} === {}; // false
new String('foo') === 'foo'; // false
new Number(10) === 10; // false
var foo = {};
foo === foo; // true
在這兒,不再僅僅是比較兩個值是否相等,它將判斷兩個值是否引用同一個對象實例,這個行為比較像 C 中的指針。
總結(jié)
這里強烈建議只使用嚴格相等符號 ===。如果我們需要做類型轉(zhuǎn)換,可以在比較前先做顯式的類型轉(zhuǎn)換,而不是靠 Javascript 本身復(fù)雜的強制轉(zhuǎn)換方法。
相關(guān)文章
設(shè)計模式中的組合模式在JavaScript程序構(gòu)建中的使用
組合模式一般是將一系列類似的小對象組合成大的對象,由這個大對象提供接口來對里面的小對象進行操作,下買呢我們來詳細看一下設(shè)計模式中的組合模式在JavaScript程序構(gòu)建中的使用2016-05-05
JavaScript substr() 字符串截取函數(shù)使用詳解
substr() 方法可在字符串中抽取從 start 下標開始的指定數(shù)目的字符,文中配有大量實例代碼2013-04-04
THREE.JS入門教程(4)創(chuàng)建粒子系統(tǒng)
Three.js是一個偉大的開源WebGL庫,WebGL允許JavaScript操作GPU,在瀏覽器端實現(xiàn)真正意義的3D本文將介紹創(chuàng)建一個粒子系統(tǒng)/風格/引入物理等等,感興趣的朋友可以了解下哦,希望本文對你有所幫助2013-01-01
在JavaScript中操作時間之getMonth()方法的使用
這篇文章主要介紹了在JavaScript中操作時間之getMonth()方法的使用,是JS入門學習中的基礎(chǔ)知識,需要的朋友可以參考下2015-06-06

