我正在阅读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;
}
答案 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。