为什么不在此循环中继续语句工作?

时间:2018-03-29 01:18:40

标签: javascript

我按照 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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:4)

continue正在结束循环,因为循环达到了终止条件。您的测试不是基于数组的长度,只是在loopCounter <=2为假时退出。由于数组中的第三个元素(在索引2处)是“非数字”值,因此break s或continue s是无关紧要的; break立即退出,continue跳转到循环顶部,loopCounter2增加到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++) {