[英]Why doesn't continue statement work in this loop?
我正在阅读《 Beginning JavaScript 》一书中的一个示例,目前正在学习break和继续语句。 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 />"); }
因为循环达到了终止条件,所以continue
正在结束循环。 您的测试不是基于数组的长度,而是在loopCounter <=2
为false时退出。 由于数组中的第三个元素(在索引2处)是“非数字”值,因此break
s还是continue
s无关紧要; break
立即退出,而continue
跳到循环顶部时,将loopCounter
从2
增加到3
,然后退出循环,因为loopCounter <=2
不再成立。 两种方式都可以完成循环。
如果将循环条件更改为loopCounter < degFahren.length
, loopCounter < 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.