打开console,输入
[] == ![]
你会发现结果是true
,这是为何?
== 与 ===
Javascript中三个等号是严格比较运算符,===不会进行类型转换,严格相等时才会返回true
-
而两个等号则会进行类型转换,当类型不相同时
null == undefined //true
- 当其中一方为
Number
类型,则将另一方转为Number
- 若其中一方为
Boolean
类型,则将Boolean
转为0或1 - 若其中一方为
Object
类型,则将其转为原始类型与另一方比较- Object皆为Truthy,但转为原始类型时会调用
valueOf()
或toString()
- Object皆为Truthy,但转为原始类型时会调用
-
因此
[] == ![]
是这么来的:- 右边的
![]
即!true
得到false
-
true
转为0 - 左边
[].toString()
得到`` -
Number(``)
得到0 0 == 0
true
- 右边的