繁体   English   中英

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

[英]Why doesn't continue statement work in this loop?

我正在阅读《 Beginning JavaScript 》一书中的一个示例,目前正在学习break继续语句。 Break可以完美地工作, continuebreak完全相同,尽管它应该继续在数组的其余部分执行代码。 这是为什么?

 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 />"); } 

因为循环达到了终止条件,所以continue正在结束循环。 您的测试不是基于数组的长度,而是在loopCounter <=2为false时退出。 由于数组中的第三个元素(在索引2处)是“非数字”值,因此break s还是continue s无关紧要; break立即退出,而continue跳到循环顶部时,将loopCounter2增加到3 ,然后退出循环,因为loopCounter <=2不再成立。 两种方式都可以完成循环。

如果将循环条件更改为loopCounter < degFahren.lengthloopCounter < degFahren.length再运行一次循环,并在continue发生时处理数组中的最终值(但如果使用break不会)。

您的理解是正确的; 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条件loopCounter <= 2 ,因此for循环终止。

如果要遍历所有元素,请将条件从loopCounter <= 2更改为loopCounter < degFahren.length

for (loopCounter = 0; loopCounter < degFahren.length;loopCounter++) {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM