今天看到了一个问题[]==false
,居然是true
因为在印象中 [],应该是个true,
!![]
或者Boolean([])
,也是个true
那么按照我的理解true==false应该是false
查阅了一下资料
https://zhuanlan.zhihu.com/p/21650547
最后总结的规则如下所示
Primitive 就是原始类型(基本数据类型)的意思
那么[]==false
符合第四条规则
先对[]进行valueOf
,[].valueOf()
还是[],没有转成基本类型数据
那么就继续用toString转成了""
[].toString()
=> ""
于是就变成了 ""==false
符合上面第二条规则
继续把两边都转成Number类型
0==0
那就是true
网友评论