Javascript array.length vs.array.length>;0

Javascript array.length vs.array.length>;0,javascript,arrays,Javascript,Arrays,检查数组的长度是否为真值与检查它是否大于0有什么区别 换句话说,是否有任何理由使用这些陈述中的一种而不是另一种: var arr = [1,2,3]; if (arr.length) { } if (arr.length > 0) { } 检查数组的长度是否为真值与检查它是否大于0有什么区别 由于arr.length的值只能是0或更大,并且0是唯一计算为false的数字,因此没有区别 通常,Boolean(n)和Boolean(n>0)对n0快且短。您可以看到它们的速度差异: if(a

检查数组的长度是否为真值与检查它是否大于0有什么区别

换句话说,是否有任何理由使用这些陈述中的一种而不是另一种:

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

if (arr.length > 0) {
}
检查数组的长度是否为真值与检查它是否大于0有什么区别

由于
arr.length
的值只能是
0
或更大,并且
0
是唯一计算为
false
的数字,因此没有区别

通常,
Boolean(n)
Boolean(n>0)
n<0产生不同的结果

换句话说,是否有任何理由使用这些语句中的一个而不是另一个


只有与代码可读性和理解相关的原因,而不是行为。

在javascript中,它们没有区别

最后,
if
括号之间的任何值都将计算为真值或假值

有关所有可能的错误值,请参见

如果您希望更清楚和明确,请使用

if (arr.length > 0) {
}
如果您希望不那么冗长,请使用

if (arr.length) {
}

array.length
array.length>0
快且短。您可以看到它们的速度差异:


if(array.length){…}
类似于
if(0){…}
if(false){…}

如果你知道这是一个对象数组(比如dom查询结果库调用),
if(arr[0])
也很好用。热烈欢迎在代码评论中争论这个问题的人们,请强调这个答案,许多开发人员选择清晰而不是简洁。在扫描时,它有助于代码的可读性。否则,没有区别。更明确的是。但更清楚的是,这一点仍有争议。在某些情况下,比如这一个,我认为清晰性与这两个选项相对平等。通常我会选择更详细的选项,但在这种情况下,我不认为它会增加任何价值。我将其理解为“如果数组有长度”,这在我看来是完全可以理解的,因此我认为>0不会增加值。我认为它实际上只是增加了不必要的噪音,尽管也许我已经适应了多年来在没有>0的情况下阅读它,所以我可以看到,对于不习惯它的人来说,这样做会更容易。(看,最后一句话我通常支持冗长:D)+1。使用JavaScript几乎可以做任何事情,即使它很愚蠢或很难阅读。编写可读代码需要优秀的开发人员,其中哪种更具可读性也是有争议的。在我看来是
if(array.length)
但我知道其他人喜欢
if(array.length>0),有趣的是
array.length对我来说比Chrome59中的
array.length>0运行得慢。不确定这是怎么可能的,因为直觉上它似乎做得更少。Chrome虚拟机以不同的方式优化每个新版本。如果你必须考虑编译器后面做什么,知道V8是用C++编写的,C++是输入的,数组的长度是一个布尔表达式,所以我会说,在某些情况下,当<代码> 0 < /COD>不存在时,它等价于<代码>布尔(数组长度)< /> >。在javascript中有很多不同的值,它们可以是真的,也可以是假的,并且都需要检查(null、false、undefined、0等等)