== 的规则

2020-10-16  本文已影响0人  王善良_

今天看到了一个问题[]==false,居然是true
因为在印象中 [],应该是个true,
!![] 或者Boolean([]),也是个true
那么按照我的理解true==false应该是false
查阅了一下资料
https://zhuanlan.zhihu.com/p/21650547
最后总结的规则如下所示

image.png

Primitive 就是原始类型(基本数据类型)的意思
那么[]==false符合第四条规则
先对[]进行valueOf[].valueOf()还是[],没有转成基本类型数据
那么就继续用toString转成了""
[].toString() => ""
于是就变成了 ""==false
符合上面第二条规则
继续把两边都转成Number类型

image.png
0==0 那就是true
上一篇下一篇

猜你喜欢

热点阅读