array.length与array.length> 0

Ben*_*Ben 12 javascript arrays

将数组的长度检查为真值并检查它是否> 0是否有任何区别?

换句话说,有没有理由使用其中一个语句而不是另一个:

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

if (arr.length > 0) {
}
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 12

将数组的长度检查为真值并检查它是否> 0是否有任何区别?

由于值arr.length只能是0或者更大,因为0它是唯一的计算数false,所以没有区别.

在一般情况下,Boolean(n)Boolean(n > 0)产生了不同的结果n < 0.

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

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

  • 最后一句话+1。您可以使用JavaScript进行几乎所有操作,即使它很愚蠢或难以阅读。一个好的开发人员需要编写可读的代码。 (2认同)
  • 其中哪一个更具可读性也存在争议。IMO 它是 `if (array.length)` 但我知道其他人更喜欢 `if (array.length &gt; 0) (2认同)

Amm*_*CSE 8

在javascript中,它们没有任何区别.

最后,无论是在之间if括号将评估为一个truthyfalsey

对于所有可能的falsey值,请参阅JavaScript中的所有falsey值

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

if (arr.length > 0) {
}
Run Code Online (Sandbox Code Playgroud)

如果你想减少冗长,请使用

if (arr.length) {
}
Run Code Online (Sandbox Code Playgroud)

  • 为了更加强调这个答案,许多开发人员选择清晰而不是简洁.扫描时,它有助于提高代码的可读性.否则,没有区别. (3认同)

She*_*yev 5

array.length比最快和短array.length > 0。您可以看到它们的速度差异:http : //jsperf.com/test-of-array-length

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

  • Chrome VM 每个新版本都会以不同的方式进行优化。如果你必须考虑编译器在后面做什么,知道 V8 是用 C++ 编写的,并且 C++ 是类型化的,作为数字的数组长度被视为布尔表达式,所以我想说在某些情况下它相当于`当“&gt; 0”不存在时,Boolean(array.length)`。javascript 中有很多不同的值可以是 true 或 false,它们都需要检查(null、false、undefined、0、'' 等) (2认同)