在使用JavaScript进行循环之前检查数组的长度

时间:2012-10-25 08:37:56

标签: javascript arrays loops

在进行循环之前检查数组的长度是否不等于0是否有意义?

var arr = [1,2,3];
if (arr.length !== 0) {
    // do loop
}

3 个答案:

答案 0 :(得分:4)

在一般情况下,它没有意义。对于foreach,for或while循环,循环条件将阻止循环执行,因此您的检查是多余的。

var arr = [];
for (var loopCounter = 0; loopCounter < arr.length; loopCounter++)
{
   // This loop will never be entered.
} 

foreach (var element in arr)
{
   // This loop will never be entered.
}

var loopCounter = 0;
while (loopCounter < arr.length)
{
   // This loop will never be entered.
   loopCounter++;
} 

然而,唯一重要的是你使用do ... while循环。在这种情况下,循环执行,然后然后检查循环条件(当它为时已晚)。在这种情况下,您的代码可能会在循环内抛出异常,如以下代码所示。

var arr = [];
var loopCounter = 0;
do 
{ 
   someMethod(arr[loopCounter]); // This will throw an error
   loopCounter++;
} 
while(loopCounter < arr.length);

答案 1 :(得分:1)

嗯,这取决于循环。如果是以下形式:

for (i = 0; i < arr.length; i++) {
    do_something_with (arr[i]);
}

然后,不,if是多余的,for循环体在这种情况下不会执行。

然而,如果你做过类似的事情(这似乎可能是你提到do循环,虽然你可能实际上意味着“做循环”,所以很难说):

i = 0;
do {
    do_something_with (arr[i]);
    i++;
while (i < arr.length);

然后,是的,如果没有这样的野兽,你需要它来避免使用arr[0]的问题。

但我会认为第二种情况(检查后)“破损”,因为while () {}for () {}变种(先检查)在这种情况下会更自然。

答案 2 :(得分:1)

不,检查是不必要的。如果数组的元素为零,则循环将执行零次(假设它被正确写入)。

如果数组可以是null,则检查该数组是有效的,例如

if(arr !== null)
{
    // loop
}