Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 测试空数组_Javascript - Fatal编程技术网

Javascript 测试空数组

Javascript 测试空数组,javascript,Javascript,使用以下语句之一检查空数组是否有任何优势 if (arr.length) {} vs 我假设它们是相同的,但我没有在网上看到第一个示例的任何示例。一般来说,它应该是相同的,因为0被识别为“false”(当转换为布尔值时)。但是使用“>0”将使代码更具可读性,因此我建议使用 if (arr.length > 0) {} 就速度而言,它们应该是相同的,或者几乎是相同的。一个主要区别是,在测试多个阵列时,易于编写代码 if (arr.length && arr2.length

使用以下语句之一检查空数组是否有任何优势

if (arr.length) {}
vs


我假设它们是相同的,但我没有在网上看到第一个示例的任何示例。

一般来说,它应该是相同的,因为0被识别为“false”(当转换为布尔值时)。但是使用“>0”将使代码更具可读性,因此我建议使用

if (arr.length > 0) {}

就速度而言,它们应该是相同的,或者几乎是相同的。

一个主要区别是,在测试多个阵列时,易于编写代码

if (arr.length && arr2.length && arr3.length) {}
这比经常指定>0要容易得多。浏览器或javascript版本是否支持速记是另一个问题。如果你的目标受众是那些使用过时浏览器的人,你可能会希望使用完整版本

if(typeof arr != "undefined" && arr != null && arr.length > 0){}
我总是被告知这是检查空数组的正确方法,我一直坚持这样做

所以,准确地回答你的问题:

if(arr.length > 0){}
是我被引导认为是“正确”的方法,因为任何阅读代码的人都更清楚隐含的逻辑是什么。我相信这可能就是为什么在文档/示例/教程中使用这种方法的原因

但是,除了语义上的外观和感觉之外,我不认为有任何特殊的优势

关于这个问题有更多的解释:


(链接,因为我不想窃取他们的描述-他们值得投票)

因为arr.length不能为负,他们将导致相同的行为。在第一种情况下,整数值
arr.length
将在布尔上下文中计算为
true
false
,如果为0,则为
false
,否则为
true
。因此,如果(arr.length!=0)与
相同。

这一切都取决于你认为什么是最清晰的。

它们实际上是一样的,最上面的一个之所以有效,是因为if语句将使用1和0来处理它们,将它们视为正确和错误的语句更短。就这些,我同意。他们是一样的!不过,可能需要添加一些关于可读性的内容。第二个更容易阅读…性能是否有差异(无论它有多小)?它们是一样的。看起来第一个问题是
我的数组有长度吗?
,第二个问题是
我的数组长度大于0
,这是一个非常类似的问题。这是一个关话题的问题。OP不想知道他的变量是否已定义。在每次测试数组长度时都这样做是没有意义的。@DenysSéguret-扩展了我的答案以涵盖问题的细节,同时在答案中保留了更多的“覆盖所有范围”复选框,以帮助提供更广泛的检查,并避免混淆没有条目的数组和空/未定义的数组,这可能会让其他读者受益,如果不是最初的提问者的话;这是一个已经在JavaScript中使用了至少18年的“特性()。
if(arr.length > 0){}