在执行循环之前检查数组的长度是否不等于 0 是否有意义?
var arr = [1,2,3];
if (arr.length !== 0) {
// do loop
}
在执行循环之前检查数组的长度是否不等于 0 是否有意义?
var arr = [1,2,3];
if (arr.length !== 0) {
// do loop
}
在一般情况下,它没有意义。对于 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);
嗯,这取决于循环。如果是以下形式:
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 () {}
变体(检查前)会更自然。
不,检查是不必要的。如果数组有零个元素,循环将执行零次(假设它被正确写入)。
如果数组可以是null
,那么检查它是有效的,例如
if(arr !== null)
{
// loop
}