if([]){}//true
if([]==true){}//false
if([1]==true){}//true
if([2]==true){}//false
if([1,2]==true){}//false
if(['Hi']==true){}//false
if([{aaa:1}]==true){}//false
[ ]
是数组。数组是对象。对象为true,因此[ ]
为真。这没关系。
但我无法理解其他结果。
答案 0 :(得分:1)
if([]){}//true
所有JavaScript对象都是真实的 - 它们都强制转换为布尔值true
。
if([]==true){}//false
如果一个操作数是一个Object,另一个操作数是一个布尔值,则两个操作数都强制转换为Number值。空数组将强制转换为0
:
0 == 1 // false
if([1]==true){}//true
这里也是一样的。对于包含一个项目的数组,该项目将强制为Number,该值将与另一个操作数进行比较:
1 == 1 // true
if([2]==true){}//false
是:
2 == 1 // false
if([1,2]==true){}//false
如果数组有多个项目,则强制转换为数字将导致NaN
:
NaN == 1 // false
if(['Hi']==true){}//false
字符串强制转换为数字值NaN
:
NaN == 1 // false
if([{aaa:1}]==true){}//false
对象也强制转换为数值NaN
:
NaN == 1 // false
答案 1 :(得分:0)
if([]==true){}//false
[]不是布尔值,因为它是一个数组。这就是说空数组是布尔值true。它不是 - 它是一个空数组。
if([]){}将其评估为已定义且不为null。
答案 2 :(得分:0)