Javascript學(xué)習(xí)筆記之相等符號(hào)與嚴(yán)格相等符號(hào)
Javascript 有兩種方法來(lái)判斷兩種值是否相等。
相等符號(hào)
相等符號(hào)由兩個(gè)等號(hào)組成: ==
Javascript 是弱類型語(yǔ)言。這就意味著相等符號(hào)為了比較兩個(gè)值將會(huì)強(qiáng)制轉(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é)果,因此我們知道使用相等符號(hào) == 是個(gè)不好的編程習(xí)慣。由于 Javascript 中復(fù)雜的類型轉(zhuǎn)換機(jī)制,將會(huì)使得由此產(chǎn)生的錯(cuò)誤變得難以追蹤。
此外,類型的強(qiáng)制轉(zhuǎn)換會(huì)對(duì)性能也造成一定的影響,例如,當(dāng)一個(gè)字符串與數(shù)字進(jìn)行比較時(shí),會(huì)被強(qiáng)制轉(zhuǎn)換為數(shù)字。
嚴(yán)格相等符號(hào)
嚴(yán)格相等符號(hào)由三個(gè)等號(hào)組成: ===
它跟相等符號(hào)的操作相似,但是嚴(yán)格相等符號(hào)不會(huì)做強(qiáng)制類型轉(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
上面的代碼使得代碼更加清晰,如果兩個(gè)值的類型不同則直接返回 false,這也會(huì)使得性能得到提升。
比較對(duì)象
盡管 == 和 === 被稱為相等符號(hào),但是當(dāng)比較的兩個(gè)值中有一個(gè)類型是對(duì)象時(shí),表現(xiàn)將大不相同。
{} === {}; // false
new String('foo') === 'foo'; // false
new Number(10) === 10; // false
var foo = {};
foo === foo; // true
在這兒,不再僅僅是比較兩個(gè)值是否相等,它將判斷兩個(gè)值是否引用同一個(gè)對(duì)象實(shí)例,這個(gè)行為比較像 C 中的指針。
總結(jié)
這里強(qiáng)烈建議只使用嚴(yán)格相等符號(hào) ===。如果我們需要做類型轉(zhuǎn)換,可以在比較前先做顯式的類型轉(zhuǎn)換,而不是靠 Javascript 本身復(fù)雜的強(qiáng)制轉(zhuǎn)換方法。
相關(guān)文章
JavaScript Undefined,Null類型和NaN值區(qū)別
js中一些空值問(wèn)題,未定義等一系列的區(qū)別說(shuō)明2008-10-10JavaScript中匿名、命名函數(shù)的性能測(cè)試
這篇文章主要介紹了JavaScript中匿名、命名函數(shù)的性能測(cè)試,簡(jiǎn)單來(lái)講匿名即沒(méi)有名字的函數(shù),它和命名函數(shù)相比性能如何呢,本文即是對(duì)它們性能的測(cè)試,需要的朋友可以參考下2014-09-09ParseInt函數(shù)參數(shù)設(shè)置介紹
經(jīng)常用ParseInt函數(shù)轉(zhuǎn)換字符串為int數(shù)值,ParseInt函數(shù)有兩個(gè)參數(shù)可以設(shè)置,其中第二個(gè)參數(shù)可以缺省2014-01-01JavaScript函數(shù)、閉包、原型、面向?qū)ο髮W(xué)習(xí)筆記
這篇文章給大家分享了一篇關(guān)于JavaScript函數(shù)、閉包、原型、面向?qū)ο蟮闹R(shí)點(diǎn)學(xué)習(xí)筆記內(nèi)容,有興趣的朋友參考下。2018-09-09Javascript核心讀書有感之表達(dá)式和運(yùn)算符
這篇文章主要介紹了Javascript核心讀書有感之表達(dá)式和運(yùn)算符,十分詳細(xì),需要的朋友可以參考下2015-02-02