js中的 [] == ![]

  • Post author:
  • Post category:其他


为啥  [] == ![] 呢?

明确几点:

1)!        的优先级高于     ==    号

2)在使用 == 号的时候,如果有一方为bool值则bool值先转化为 0 || 1 进行比较

分析:从优先级高的一方开始

右边进行显示转换   !Boolean([])      =>    ! true      =>   false

式子变为:             [] == false         =>     [] == 0

左边进行转换           Number([])      =>    0

式子变为:                0  == 0

结果返回的当然是true

下面是类型转换表

原始值 转化为数值类型 转化为字符串类型 转化为 Boolean 类型
false 0 “false” false
true 1 “true” true
0 0 “0” false
1 1 “1” true
“0” 0 “0” true
“1” 1 “1” true
NaN NaN “NaN” false
Infinity Infinity “Infinity” true
-Infinity -Infinity “-Infinity” true
“” 0 “” false
“20” 20 “20” true
“twenty” NaN “twenty” true
[ ] 0 “” true
[20] 20 “20” true
[10,20] NaN “10,20” true
[“twenty”] NaN “twenty” true
[“ten”,”twenty”] NaN “ten,twenty” true
function(){} NaN “function(){}” true
{ } NaN “[object Object]” true
null 0 “null” false
undefined NaN “undefined” false



版权声明:本文为qq_39846450原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。