为什么数组 [] 在JS中等于 false 的结果会是 true?

2026-04-06 11:100阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计528个文字,预计阅读时间需要3分钟。

为什么数组 [] 在JS中等于 false 的结果会是 true?

JavaScript 判断 `[]===false` 为 `true` 的原因:

javascriptvar tmp='a';if ([]===false) tmp +='b';if (![]) tmp +='c';alert(tmp); // tmp 的值为什么是?

原因在于 JavaScript 中的逻辑运算符和比较运算符的优先级。`![]` 是一个逻辑非运算,它首先将数组 `[]` 转换为 `false`,然后执行逻辑非运算,结果为 `true`。因此,`![]` 的结果是 `true`。

在比较运算符 `===` 中,`[]===false` 的比较首先检查类型是否相同,由于都是布尔值,比较的结果就是值是否相等。由于 `[]` 转换为 `false`,所以这两个值相等,结果为 `true`。

JS判断 []==false 结果为什么是true?.md

> JS判断 []==false 结果为什么是true? ``` var tmp = 'a'; if([] == false) tmp += 'b'; if(![]) tmp += 'c'; alert(tmp); //tmp 值为 ? ``` 你或许会不理解[]==false为什么会判断为true? 这个js 的判定 在权威指南中有明确说明。主要是js的机制问题 任何类型在特定环境 会把类型改变成匹配环境的类型。 if()这个括号环境里面 需要的是bool值 那么不管你在括号里写什么 最终将会被转化成bool。 而[]等于false,在等于运算符的左边权威指南中用了左值这个名词 在==这个环境中首先将左值进行了类型转化。 在js看来 空数组 空对象 0 空字符串 等当作false 所以[]==false 这个返回的是true。

阅读全文

本文共计528个文字,预计阅读时间需要3分钟。

为什么数组 [] 在JS中等于 false 的结果会是 true?

JavaScript 判断 `[]===false` 为 `true` 的原因:

javascriptvar tmp='a';if ([]===false) tmp +='b';if (![]) tmp +='c';alert(tmp); // tmp 的值为什么是?

原因在于 JavaScript 中的逻辑运算符和比较运算符的优先级。`![]` 是一个逻辑非运算,它首先将数组 `[]` 转换为 `false`,然后执行逻辑非运算,结果为 `true`。因此,`![]` 的结果是 `true`。

在比较运算符 `===` 中,`[]===false` 的比较首先检查类型是否相同,由于都是布尔值,比较的结果就是值是否相等。由于 `[]` 转换为 `false`,所以这两个值相等,结果为 `true`。

JS判断 []==false 结果为什么是true?.md

> JS判断 []==false 结果为什么是true? ``` var tmp = 'a'; if([] == false) tmp += 'b'; if(![]) tmp += 'c'; alert(tmp); //tmp 值为 ? ``` 你或许会不理解[]==false为什么会判断为true? 这个js 的判定 在权威指南中有明确说明。主要是js的机制问题 任何类型在特定环境 会把类型改变成匹配环境的类型。 if()这个括号环境里面 需要的是bool值 那么不管你在括号里写什么 最终将会被转化成bool。 而[]等于false,在等于运算符的左边权威指南中用了左值这个名词 在==这个环境中首先将左值进行了类型转化。 在js看来 空数组 空对象 0 空字符串 等当作false 所以[]==false 这个返回的是true。

阅读全文