深入解析 JavaScript 中 [''] == false 为 true 的隐式转换机制

作者:工具松鼠时间:2026-10-31 01:56:31浏览:525

本文解析 JavaScript 中 [''] == false 返回 true 的底层逻辑。通过 ES5 规范定义的抽象相等比较算法,依次经历布尔值转数字、对象转原始值(调用 toString)、字符串转数字三个步骤,最终得出 0 == 0 的结果。

JavaScript中[''] == false的转换过程

JavaScript中[''] == false的转换过程

求解下列表达式的运算结果:

[''] == false

初始状态下,两侧操作数分别为对象与布尔型。参照图1规则,需将布尔值转换为数值,其中false转换为数字后为0,因此原式改写为:

[''] == 0

此时操作数类型分别对应对象与数字。依据图1逻辑,必须将对象类型转换为原始类型:

先执行[].valueOf(),因数组的该方法返回对象自身而非原始值,故继续调用[].toString()。

数组的toString()方法逻辑是将各元素转为字符串后以逗号','拼接,最终生成空字符串'',此为原始类型值。

此时表达式演变为:

'' == 0

操作数类型现为字符串与数字。按图1规定,需将字符串转为数字,前文已述空字符串转数字结果为0。故表达式进一步简化为:

0 == 0

至此,两侧操作数类型一致,最终判定结果为true。

作者最新文章