如果我需要表达式来评估布尔值作为结果,如何检查数组长度?例如:
var myArray = [];
if(!myArray.length){
return;
}
或者:
vr myArray = [];
if(myArray.length == 0){
return;
}
这两个例子都有效,但我想了解有什么区别?
答案 0 :(得分:1)
此处!myArray.length
会在两种情况下返回true
:
myArray.length===0
因为0
是 falsy value ,那么!0
将返回true
。myArray.length
为undefined
,换句话说,myArray
不是array
,因此它没有length
属性,其中{{1} }} falsy value 。第一个解释了为什么undefined
和!myArray.length
在您的情况下都是等效的。
答案 1 :(得分:0)
这是因为length
函数返回一个数字,当您使用数字作为条件时,0
和NaN
被评估为false
(在其他情况下被评估为{ {1}})。