首先,我对输出感到困惑吗?这样的输出怎么可能?
我尝试了很多逻辑,但是没有通用逻辑/
带有'break;声明:
for (var i = 2; i <= 8; i++) {
if (i == 5) {
break;
}
i++;
console.log(i);
}
,带有“ continue”语句:
for (var i = 2; i <= 8; i++) {
if (i == 5) {
continue;
}
i++;
console.log(i);
}
两者的输出相同:3 5 7 9
答案 0 :(得分:0)
由于在块内和for
语句内都采用了双倍递增,因此您只能得到偶数进行检查。
// loop 1 2 3 4
// ---- --- --- --- ---
for (var i = 2; i <= 8; i++) { // increment 2 4 6 8
console.log('top', i); // always even 2 4 6 8
if (i == 5) { // check with even value 2 4 6 8
// continue;
// break
}
i++; // increment 3 5 7 9
console.log('bot', i); // always odd 3 5 7 9
}
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
众所周知,
在此代码中,
for (var i = 2; i <= 8; i++) {
if (i == 5) {
break; / continue;
}
i++;
console.log(i);
}
您的i
被递增两次,一次在loop
中,另一次在loop body
中,即手动递增。
在这种情况下,循环执行以下步骤,
循环迭代1
输入循环并进行检查,
如果(i == 5){
打破; /继续;
} //与i=2
相同,这是错误的,如果条件不存在,则不会输入
i
现在增加到3 i
增至4 循环迭代2,
进入循环并检查,
如果(i == 5){
打破; /继续;
} //与i=4
相同,这是错误的,如果条件不存在,则不会输入
i ++ // i
现在增加到5
i
增至6 循环迭代3
进入循环并检查,
如果(i == 5){
打破; /继续;
} //与i=6
一样,它是错误的,如果条件
,并继续进行上述下一步。
最后得出结论
如果满足条件,则您的两个代码段都不会输入
if (i == 5) {
break; / continue;
}
因此,您的代码永不中断/继续。