面试题答案
一键面试- 输出结果:
- 输出
true
。
- 输出
- 隐式转换过程:
- 在
[] == false
这个比较中:- 首先,
==
操作符在比较时,如果两个操作数类型不同,会进行隐式类型转换。 - 对于
[]
(空数组),当它与布尔值false
比较时,会遵循以下转换规则:- 数组会先尝试转换为原始值。根据 JavaScript 规范,数组转换为原始值时,会调用
valueOf()
方法和toString()
方法。[]
调用valueOf()
方法返回的还是数组本身[]
,不满足原始值要求,于是继续调用toString()
方法,[]
调用toString()
方法返回空字符串''
。 - 布尔值
false
在与其他类型比较时,会转换为数字0
。 - 此时比较变成了
'' == 0
。 - 空字符串
''
会转换为数字0
(这是 JavaScript 字符串转数字的规则,空字符串转数字为0
)。 - 最终比较变成了
0 == 0
,这个比较结果为true
,所以if
条件成立,输出true
。
- 数组会先尝试转换为原始值。根据 JavaScript 规范,数组转换为原始值时,会调用
- 首先,
- 在