Fork me on GitHub

JS中奇葩的假值

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
posted @ 2018-03-13 20:27  cosyer  阅读(175)  评论(0编辑  收藏  举报