js中 [] ? true : false 的返回值为什么是true?

 [] ? true : false 

上述三目运算的值为 true ,不明白原因是什么,求解释?

阅读 5.8k
6 个回答
[] ? true : false

// 也就是

if([]){
    return true;
}else {
    return false;
}

空数组的布尔转化值为 true,只有下面几种的布尔强制转化值为 false

  • undefined
  • null
  • 0或+0或-0或0.0
  • NaN
  • ''(空字符串)
新手上路,请多包涵

空数组实际是一个非空的对象,非空的对象转换成true

?前面进行的全等判断。[]!==false为true,所以为true。

判断最好用 === 做判断。用 == 做判断,特别是用在if中,会出现很多奇怪的情况,比如:

if([] == ''){
   alert(123);
}

上述代码会弹出123。所以最好都用全等。

三元运算表达式期望得到的是一个布尔值,而表达式给出的是一个空数组,就调用了Boolean构造函数,使空数组转化成了布尔值真,如果是空对象也是转化成真的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题