测试如下
console.log([]==false)
打印值为true
然后
[]?console.log('aaa'):consoel.log("bbb")
打印值为 aaa
那么 [] 到底为true 还是false### 问题描述
问题出现的环境背景及自己尝试过哪些方法
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
测试如下
console.log([]==false)
打印值为true
然后
[]?console.log('aaa'):consoel.log("bbb")
打印值为 aaa
那么 [] 到底为true 还是false### 问题描述
// 请把代码文本粘贴到下方(请勿用图片代替代码)
关于比较去参考 MDN 的 JavaScript 中的相等性判断,你会发现文末给出的 JS 比较表可以解答你的第一个问题(当然还是推荐把 MDN 那篇先看完再说);而第二个其实是个类型转换,相当于 Boolean([])
的结果(可以去控制台跑下),相当于你使用了一个错误的数据类型,我个人认为虽然 JavaScript 是个弱类型语言,但是还是要注意尽量保持类型的统一,可以偶尔借用类型转换的特性,但是多数情况下,还是尽量不要用这种给自己留坑的做法吧。
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
某种程度来说,[] 既不等于 true 也不等于 false ([] === true || [] === false)。
打印 aaa 是因为这个自动转换为布尔值
== 比较参考下面这个规则
转换顺序看下面:
所以为 true