array.length vs. array.length> 0

时间:2015-10-02 16:11:58

标签: javascript arrays

将数组的长度检查为真实值与检查它的< s>之间是否有任何区别? 0?

换句话说,是否有任何理由将这些陈述中的一个用于另一个陈述:

var arr = [1,2,3];
if (arr.length) {
}

if (arr.length > 0) {
}

3 个答案:

答案 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){...}

类似