MST
星途 面试题库

面试题:JavaScript 数据类型转换与隐式类型转换 - 中等难度

请解释在 JavaScript 中,为什么 `[] == false` 的结果为 `true`?详细说明其中涉及的数据类型转换过程。
28.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

在JavaScript中,[] == false结果为true,这是因为==操作符在比较不同类型的值时会进行隐式类型转换。具体的数据类型转换过程如下:

  1. 对象到原始值的转换

    • [](数组)与false比较时,数组是对象类型,首先会尝试将其转换为原始值。
    • 数组通过valueOf()方法返回自身,由于这不是原始值,接着会调用toString()方法。
    • []调用toString()方法返回空字符串''
  2. 布尔值到数字的转换

    • false会被转换为数字,false转换为数字时结果是0
  3. 字符串到数字的转换

    • 空字符串''与数字比较时,会被转换为数字。空字符串转换为数字的结果是0
  4. 最终比较

    • 此时比较变为0 == 0,结果为true

所以[] == false的结果为true