[] == ![] 返回 true
对于==来说,如果数据类型不同,就会进行隐式类型转换。
- 首先判断是否在对比
null和undefined,是的话就会返回true; - 判断其中一方是否为
string,在与number进行比较,是的话就会将字符串转换为number; - 判断其中一方是否为
boolean,是的话就会把boolean转为number再进行判断; - 判断其中一方是否为
object,是的话就会把object转为原始类型再进行判断;转为原始类型时会调用valueOf()或 toString();
其流程图如下:

因此[] == ![]是这么来的:
- 对象的非空引用是
true,只有null空引用为false - 右边的
![]即!true,得到false false转为Number是0true转为0- 左边
[].toString()得到`` Number(``)得到00 == 0,返回true
本文来自博客园,作者:辉太狼`,转载请注明原文链接:https://www.cnblogs.com/HuiTaiLang1216/p/15561776.html

浙公网安备 33010602011771号