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){}