将数组的长度检查为真实值与检查它的< s>之间是否有任何区别? 0?
换句话说,是否有任何理由将这些陈述中的一个用于另一个陈述:
var arr = [1,2,3];
if (arr.length) {
}
if (arr.length > 0) {
}
答案 0 :(得分:11)
将数组的长度检查为真实值与检查它的>之间是否有任何区别? 0?
由于arr.length
的值只能是0
或更大,因为0
是评估为false
的唯一数字,所以没有区别。
通常,Boolean(n)
和Boolean(n > 0)
会为n < 0
产生不同的结果。
换句话说,有没有理由使用其中一个语句而不是其他语句
只有与代码可读性和理解相关的原因,而不是行为。
答案 1 :(得分:7)
在javascript中,它们没有任何区别。
最后,if
括号之间的任何内容都将评估为 truthy 或 falsey 值
对于所有可能的假名值,请参阅All falsey values in JavaScript
如果您希望更清晰明确,请使用
if (arr.length > 0) {
}
如果您想减少冗长,请使用
if (arr.length) {
}
答案 2 :(得分:5)
array.length
最快且比array.length > 0
短。您可以看到他们的速度差异:http://jsperf.com/test-of-array-length
if(array.length){...}
与if(0){...}
或if(false){...}