为什么在JS中 [] == false 的比较结果会是 true?
- 内容介绍
- 文章标签
- 相关推荐
本文共计593个文字,预计阅读时间需要3分钟。
JS 判断 `[ ]==false` 的结果为 true,原因如下:
javascriptvar tmp='a';if ([ ]==false) tmp +='b';if (![]) tmp +='c';alert(tmp); // tmp 的值为什么是?
这段代码中,`[ ]` 是一个空数组,它是一个假值(falsy value)。在 JavaScript 中,`==` 是一个双等号运算符,它会在比较时进行类型转换。当 `[ ]==false` 时,由于 `[ ]` 是假值,比较结果为 true。
解释如下:
1. `[ ]==false`:由于 `[ ]` 是一个空数组,它是假值,而 `false` 也是假值,因此比较结果为 true。
2.`tmp` 的初始值是 `'a'`,由于第一个 `if` 语句的条件为真,`tmp` 被赋值为 `'ab'`。
3.第二个 `if` 语句 `![]` 也为真,因为 `[ ]` 是假值,其逻辑非 `![]` 结果为真,因此 `tmp` 再次被赋值为 `'abc'`。
4.最终,`alert(tmp)` 会显示 `'abc'`。
本文共计593个文字,预计阅读时间需要3分钟。
JS 判断 `[ ]==false` 的结果为 true,原因如下:
javascriptvar tmp='a';if ([ ]==false) tmp +='b';if (![]) tmp +='c';alert(tmp); // tmp 的值为什么是?
这段代码中,`[ ]` 是一个空数组,它是一个假值(falsy value)。在 JavaScript 中,`==` 是一个双等号运算符,它会在比较时进行类型转换。当 `[ ]==false` 时,由于 `[ ]` 是假值,比较结果为 true。
解释如下:
1. `[ ]==false`:由于 `[ ]` 是一个空数组,它是假值,而 `false` 也是假值,因此比较结果为 true。
2.`tmp` 的初始值是 `'a'`,由于第一个 `if` 语句的条件为真,`tmp` 被赋值为 `'ab'`。
3.第二个 `if` 语句 `![]` 也为真,因为 `[ ]` 是假值,其逻辑非 `![]` 结果为真,因此 `tmp` 再次被赋值为 `'abc'`。
4.最终,`alert(tmp)` 会显示 `'abc'`。

![为什么在JS中 [] == false 的比较结果会是 true?](/imgrand/RjJchIJR.webp)