JavaScript 中的空数组是否真实?
Empty array is truthy or not in JavaScript?
我对以下结果有点困惑,有人可以指出幕后发生的事情吗?
为什么 Boolean([]) 会 return 为真?
松散地将空数组与布尔值进行比较
[] == false 会评估为 true?
但严格比较会评估为假??
这是我不明白的部分
非常感谢!
Boolean([])
//true
[] == false
//true
[] === false
//false
最简单的可靠检查方法是使用长度属性。
[].length // 0, falsy
['something'].length // 1. truthy
查看官方spec了解更多信息。
Boolean([]) // => true
- 这里,[](数组是对象类型)正在转换为布尔值。自从 []
有参考价值,换算后为真。
.
[] == false // => false
- 在这里,相等运算符松散地检查值。由于双方都是
不同的类型(对象和布尔值),其中一个是布尔值,所以
它将转换为(0 或 1)并与另一侧进行比较。这将是
相当于 +[] == +false,即 0 == 0,将为 true
Check MDN document for more details
[] === false // => false
- 在这里,严格相等运算符。将检查 Type 和 value Since
两者是不同的类型,它将是错误的。
我对以下结果有点困惑,有人可以指出幕后发生的事情吗?
为什么 Boolean([]) 会 return 为真?
松散地将空数组与布尔值进行比较
[] == false 会评估为 true?
但严格比较会评估为假??
这是我不明白的部分
非常感谢!
Boolean([])
//true
[] == false
//true
[] === false
//false
最简单的可靠检查方法是使用长度属性。
[].length // 0, falsy
['something'].length // 1. truthy
查看官方spec了解更多信息。
Boolean([]) // => true
- 这里,[](数组是对象类型)正在转换为布尔值。自从 [] 有参考价值,换算后为真。
.
[] == false // => false
- 在这里,相等运算符松散地检查值。由于双方都是 不同的类型(对象和布尔值),其中一个是布尔值,所以 它将转换为(0 或 1)并与另一侧进行比较。这将是 相当于 +[] == +false,即 0 == 0,将为 true
Check MDN document for more details
[] === false // => false
- 在这里,严格相等运算符。将检查 Type 和 value Since 两者是不同的类型,它将是错误的。