我按照 Beginning JavaScript 一书中的示例进行操作,目前正在学习 break 和 continue 语句。 Break 工作正常, continue 与 break 完全相同,尽管它应该继续在数组的其余部分执行代码。那是为什么?
var degFahren = [212, 32, "string data", -459.15];
var degCent = [];
var loopCounter;
for (loopCounter = 0; loopCounter <=2; loopCounter++) {
if (isNaN(degFahren[loopCounter])) {
alert("Data '" + degFahren[loopCounter] +
"' at array index " + loopCounter + " is invalid");
continue;
}
degCent[loopCounter] = 5/9 * (degFahren[loopCounter] - 32);
}
for (loopCounter = 2; loopCounter >= 0; loopCounter--) {
document.write("Value " + loopCounter +
" was " + degFahren[loopCounter] +
" degrees Fahrenheit");
document.write(" which is " + degCent[loopCounter] +
" degrees centigrade<br />");
}
&#13;
答案 0 :(得分:4)
continue
正在结束循环,因为循环达到了终止条件。您的测试不是基于数组的长度,只是在loopCounter <=2
为假时退出。由于数组中的第三个元素(在索引2处)是“非数字”值,因此break
s或continue
s是无关紧要的; break
立即退出,continue
跳转到循环顶部,loopCounter
从2
增加到3
,然后退出循环,因为{{1} }不再是真的。无论哪种方式,循环都已完成。
如果将循环条件更改为loopCounter <=2
,则会再次运行循环并在loopCounter < degFahren.length
发生时处理数组中的最终值(但如果使用{{1}则不会而不是)。
答案 1 :(得分:3)
你的理解是正确的; continue
跳到循环体的末尾,继续下一次迭代。
循环以loopCounter = 0
开头。满足条件loopCounter <= 2
,因此控制流进入正文,跳过继续。
在for
主体之后,执行for
循环标头中的第三个代码块。在这种情况下,loopCounter++
,loopCounter
现在为1.条件loopCounter <= 2
已满足,因此控制流进入正文,跳过continue
}。
在for
主体之后,执行for
循环标头中的第三个代码块,结果为loopCounter = 2
。满足条件loopCounter <= 2
,因此控制流进入身体。
现在,执行continue
,因为第二个元素不是数字。它会跳到for
正文的末尾。
在for
主体之后,执行for
循环标头中的第三个代码块,结果为loopCounter = 3
。 条件loopCounter <= 2
未达到,因此for
循环终止。
如果要迭代所有元素,请将条件从loopCounter <= 2
更改为loopCounter < degFahren.length
:
for (loopCounter = 0; loopCounter < degFahren.length;loopCounter++) {