为什么数组 [] 在JS中等于 false 的结果会是 true?
- 内容介绍
- 文章标签
- 相关推荐
本文共计528个文字,预计阅读时间需要3分钟。
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分钟。
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。

![为什么数组 [] 在JS中等于 false 的结果会是 true?](/imgrand/Bz7Ao4Zb.webp)