为什么继续;语句冻结浏览器
Why does continue; statement freeze browser?
我正在制作一个小脚本,它将迭代数字并跳过数字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>
if (i === 5) {continue;}
将永远不允许控制继续进行并且递增CCD_ 3。因此,当i
变为5时,它总是会返回。
解决方案:
if (i === 5) {
i++; // Increament `i` first
continue;
}
OR,使用for
第三个参数。
for (; i<8; i++) {
^^^ // Increment `i` for each iteration
使用CCD_ 6条件可以做另一件简单的事情。
for (; i < 8; i++) {
// If i is not 5, then only append to the string.
if (i !== 5) {
text += "The number is " + i + "<br>";
}
}
这会导致一个无限循环,因为您的值永远不会递增。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>
if (i === 5) {continue;}
当i
为5时,它再也没有机会到达i++
。因此,i
将永远是5,并且您永远不会退出循环。
相关文章:
- 为什么继续;语句冻结浏览器
- 循环的Javascript冻结浏览器,没有语法错误
- AJAX 调用在获得响应并成功执行时会冻结浏览器一段时间
- 如何使用 dojo 在不冻结浏览器的情况下下载文件
- 如何在不冻结浏览器的情况下执行大量javascript代码
- AJAX-如何在不冻结浏览器的情况下逐个发出异步请求
- 为什么按 setTimeout 拆分的工作负载仍然会冻结浏览器
- 必应地图通过添加 8000 个图钉来冻结浏览器
- Javascript:尝试在不冻结浏览器的情况下加载高图表
- Javascript拆分冻结浏览器
- 使用高图创建大型热图会冻结浏览器
- Jquery脚本正在冻结浏览器,但正在工作
- JavaScript冻结浏览器
- jquery中的多个Ajax请求会冻结浏览器
- Javascript -更新textarea冻结浏览器选项卡
- JavaScript冻结浏览器
- 而true循环会冻结浏览器的javascript
- Javascript——等待用户交互而不冻结浏览器
- 加载多个TinyMCE实例会冻结浏览器,解决方案
- Javascript代码会冻结浏览器,并且代码只能在firefox中工作