JavaScript 常見錯誤四:比較運算符

2021-09-18 15:59 更新

JavaScript中一個比較便捷的地方,便是它可以給每一個在比較運算的結(jié)果變量強行轉(zhuǎn)化成布爾類型。但是從另一方面來考慮,有時候它也會為我們帶來很多不便,下面的這些例子便是一些一直困擾很多程序員的代碼實例:

console.log(false == '0'); 

console.log(null == undefined); 

console.log(" \t\r\n" == 0); 

console.log('' == 0);  // And these do too! 

if ({}) // ... 

if ([]) // ...

最后兩行的代碼雖然條件判斷為空(經(jīng)常會被人誤認為轉(zhuǎn)化為false),但是其實不管是{ }還是[ ]都是一個實體類,而任何的類其實都會轉(zhuǎn)化為true。就像這些例子所展示的那樣,其實有些類型強制轉(zhuǎn)化非常模糊。因此很多時候我們更愿意用 === 和 !== 來替代== 和 !=, 以此來避免發(fā)生強制類型轉(zhuǎn)化。. ===和!== 的用法和之前的== 和 != 一樣,只不過他們不會發(fā)生類型強制轉(zhuǎn)換。另外需要注意的一點是,當任何值與 NaN 比較的時候,甚至包括他自己,結(jié)果都是false。因此我們不能用簡單的比較字符來決定一個值是否為 NaN 。我們可以用內(nèi)置的 isNaN() 函數(shù)來辨別:

`console.log(NaN == NaN);    // false 

console.log(NaN === NaN);   // false 

console.log(isNaN(NaN));    // true `
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號