[JavaScript] 第1363天 请解释下[] == ![]的结果

133 阅读1分钟

cover.png

表达式 [] == ![] 的结果是 true

这里需要注意的是 JavaScript 中的隐式类型转换,以及运算符的优先级和结合性。

首先,右侧的 ![] 表达式会把空数组转换为布尔值 true,再进行逻辑非运算,结果为 false

然后,左侧的 [] 表达式在比较相等性之前,会被强制转换为数字类型,因为比较运算符 == 需要两边的操作数类型相同。由于数组是一个对象,对象在进行数字类型的强制转换时会先转换为字符串,再转换为数字。空数组转换为字符串后是一个空字符串 "",再转换为数字就是 0

因此,表达式变成了 0 == false,在比较相等性时,布尔值 false 会被转换为数字类型 0,所以结果为 true

扩展阅读

www.yuque.com/shixin-5pls…

更多题目

github.com/haizlin/fe-…