我正在编写一个小脚本来迭代数字并跳过数字5.我想用continue;
语句/标签来实现这一点。
这是我的代码:
<p id="test"></p>
<script>
var i, text;
text = "";
i = 0;
for (;i<8;) {
if (i === 5) {continue;}
text += "The number is " + i + "<br>";
i++;
}
document.getElementById('test').innerHTML = text;
</script>
我没有看到任何拼写错误,但现在编码超过12个小时,也许我正在监督明显的事情。如果是的话,我道歉。
当我想使用break;
语句停在第5位时,这是有效的。
<p id="test"></p>
<script>
var i, text;
i = 0;
text = "";
for (;i<8;) {
if (i === 5) {break;}
text += "The number is " + i "<br>";
i++;
}
document.getElementById('test').innerHTML = text;
</script>
答案 0 :(得分:6)
if (i === 5) {continue;}
永远不会允许控件继续并增加i
。因此,当i
变为五时,它总是会回来。
<强>解决方案:强>
if (i === 5) {
i++; // Increament `i` first
continue;
}
OR,使用for
第三个参数。
for (; i<8; i++) {
^^^ // Increment `i` for each iteration
使用if
条件可以做一件简单的事情。
for (; i < 8; i++) {
// If i is not 5, then only append to the string.
if (i !== 5) {
text += "The number is " + i + "<br>";
}
}
答案 1 :(得分:1)
这会导致无限循环,因为您的值永远不会增加。 continue
将进入下一次迭代,但由于您尚未定义语句来增加值,因此永远不会发生这种情况。
考虑如下重构循环,而不是在循环体内执行增量:
<script>
var text = "";
// This is the most common approach to defining a for-loop as it handles defining
// your iterator, defining a stop condition and handles how to increment your value
// after each iteration
for (var i = 0; i < 8; i++) {
if (i === 5) {break;}
text += "The number is " + i "<br>";
}
document.getElementById('test').innerHTML = text;
</script>
答案 2 :(得分:1)
if (i === 5) {continue;}
当i
为5时,永远不会再有机会到达i++
。因此,i
将永远为5,您永远不会退出循环。