JavaScript中奇葩的假值


通常在以下語句結構中需要判斷真假

  1. if分支語句
  2. while循環語句
  3. for里的第二個語句

if (boo) {
    // do something
}

while (boo) {
    // do something
}

 

JavaScript中有 6 個值為“假”,這六個值是

  1. false
  2. null
  3. undefined
  4. 0
  5. '' (空字符串)
  6. NaN

 

這里面 false 本身是布爾類型,其它 5 個則不是。

除了這 6 個外,其它均為“真” ,包括對象、數組、正則、函數等。注意 '0'、'null'、'false'、{}、[]也都是真值  。

 

雖然這六個值都為“假”,它們之間並非都相等

console.log( false == null )      // false
console.log( false == undefined ) // false
console.log( false == 0 )         // true
console.log( false == '' )        // true
console.log( false == NaN )       // false

console.log( null == undefined ) // true
console.log( null == 0 )         // false
console.log( null == '' )        // false
console.log( null == NaN )       // false

console.log( undefined == 0)   // false
console.log( undefined == '')  // false
console.log( undefined == NaN) // false

console.log( 0 == '' )  // true
console.log( 0 == NaN ) // false

 

對於“==”,以上得出下列結論

  • false 除了和自身比較為 true 外,和 0,"" 比較也為 true
  • null 只和 undefined 比較時為 true, 反過來 undefined 也僅和 null 比較為 true,沒有第二個
  • 0 除了和 false 比較為 true,還有空字符串 ''" 和空數組 []
  • 空字符串 '' 除了和 false 比較為 true,還有一個數字 0

 

當然,對於這一切,查看下規范是最踏實的,ES里的ToBoolean闡述了所有情形

 

相關:

JavaScript中的隱式類型轉換


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM