javascript - 【快速判断数组为空】[]==false 为什么返回true?
習慣沉默
習慣沉默 2017-07-05 10:51:52
0
6
1232
console.log([]==false); //输出为true

console.log(['1']==false);//输出为false

可见,这可以很快速判断数组是否为空,但是原理上有些疑惑。
已知:

1.相等操作符"==":先转换再比较。 如果有一个操作数是布尔值,则在比较相等性之前将其转换为数值false转换为0,true转换为1。

2.如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值进行转换。

所以[]==fasle的右边会被转换成0。那左边呢?是怎样转换的呢?

習慣沉默
習慣沉默

全部回复(6)
黄舟

这个送给你,javascript 的对比表格:Relational and Equality Operators

typecho

http://tech.youzan.com/javasc...
看完你会懂的

大家讲道理

因为他们都会转化为布尔值进行比较,
[]==false
=>
true == false   //false

刘奇

先转为数字0,然后再对比吧。

世界只因有你

讲道理判断数组为空用这个是不行的吧!

if([]){
    alert('1111');
}

我以为它不会弹,结果还是弹了。大多数情况还是length来判断。当然length判断元素个数的时候也是坑!

滿天的星座

只能说js的内部机制是空数组就是false所以false==false成立啊!那非空数组自然转换成true了true==false就不成立啊!有啥难理解的吗?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!