JavaScript中奇葩的假值

通常在以下语句结构中需要判断真假

  1. if分支语句
  2. while循环语句
  3. for里的第二个语句

1
2
3
4
5
6
7
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‘、{}、[]也都是真值  。

 

虽然这六个值都为“假”,它们之间并非都相等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

 

     

JavaScript中奇葩的假值,布布扣,bubuko.com

JavaScript中奇葩的假值

上一篇:比較Backbone.js, Angular.js, Ember.js, Knockout.js 心得


下一篇:那些不兼容 IE11的网站(持续更新)