我正在阅读这个问题,我无法理解用于“for循环”的概念。
通常,for循环的语法是for(指定值,检查条件,增量){}
。他们使用了for循环,但没有进行条件检查,这是如何工作的?
for(var i = arr1.length; i--;) {
if(arr1[i] !== arr2[i])
return false;
}
我正在阅读这个问题,我无法理解用于“for循环”的概念。
通常,for循环的语法是for(指定值,检查条件,增量){}
。他们使用了for循环,但没有进行条件检查,这是如何工作的?
for(var i = arr1.length; i--;) {
if(arr1[i] !== arr2[i])
return false;
}
实际上,这是
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++;
}
for (;;);
将编译,但可能不是你想要的。 - flakes仔细查看代码
for(var i = arr1.length; i--;) {
if(arr1[i] !== arr2[i])
return false;
}
return
语句,控制权都会移动到for
循环之外,甚至是包含此for
循环的函数之外。因此,当满足条件arr1[i] !== arr2[i]
时,循环将在没有条件的情况下中断。for循环中的三个参数都是可选的。
这里的循环使用i值从arr1.length -> 1变化。 i的递减是在第二个参数中完成的。 由于第二个参数是用于条件检查的,当i变为零时它会返回一个假值,迭代停止。 如果数组不匹配,循环将在中间返回false。
return false
中断循环。 - RajeshArray#filter
这样的数组函数来查找匹配项,这对于查找非常有帮助。 - prasanth