没有条件检查的for循环

时间:2017-09-12 06:11:12

标签: javascript for-loop

我正在阅读this question,我无法理解'for loop'所使用的概念

通常,for循环的语法是for(assign value, check condition, increment){} 他们使用了for循环,但是没有条件检查,这是如何工作的?

for(var i = arr1.length; i--;) {
    if(arr1[i] !== arr2[i])
        return false;
}

3 个答案:

答案 0 :(得分:11)

实际上,它是

for ([initialization]; [condition]; [final-expression])

其中所有三个表达式都是可选

在这种情况下,i-- 是一个条件,当它达到0时它就是假的,并且循环停止了。
"final-expression"是此处未使用的。

var arr = [1, 2, 3, 4];

for (var i = arr.length; i--;) {
  console.log(arr[i]);
}

for语句将i的值设置为正整数,然后在每次迭代时评估条件,有效地递减i,直到达到假数字为止,当i达到零时发生。

以下是如何在for循环

中跳过表达式的其他一些示例

跳过初始化

var i = 0;
for (; i < 4; i++) {
    console.log(i);
}

跳过条件

for (var i = 0;; i++) {
   console.log(i);
   if (i > 3) break;
}

跳过所有内容

var i = 0;

for (;;) {
  if (i > 4) break;
  console.log(i);
  i++;
}

答案 1 :(得分:0)

仔细查看代码

for(var i = arr1.length; i--;) {
    if(arr1[i] !== arr2[i])
        return false;
}

每当浏览器遇到return语句时,控件就会移到for循环之外,甚至在包含此for循环的函数之外。因此,当条件arr1[i] !== arr2[i]满足时,循环中断而没有条件。

答案 2 :(得分:0)

for循环中的所有三个参数都是可选的。

这里循环迭代,i值从arr1.length变化 - &gt; 1。 减少i是在第二个参数本身完成的。 由于第二个参数用于条件检查,当i变为零时它将返回一个假值,并且迭代停止。 如果数组不匹配,则循环将在中间返回false。