运行下面的代码时,document.write中的文本运行8次,而不是我预期的7次。
如果我理解正确,增加2应该显示位置:
20+2, 22+2, 24+2, 26+2, 28+2, 30+2 and 32+2
。
根据我得到的结果,我假设它也显示34 + 2,即36。我缺少什么?谢谢。
x = 20;
for (x = 20; x < 35; x += 2) {
document.write("How many times will this loop execute?" + "<br/>");
};
答案 0 :(得分:2)
如上面的评论所述,循环运行8次是正确的。由于没有人说明原因,因此:x+=2
发生在循环的 end ,而不是在开头。因此循环将运行20,22,24,26,28,30,32和34。
答案 1 :(得分:0)
您误解了for
loop的工作原理。
for([initialization]; [condition]; [final-expression])
final-expression:在每个循环迭代结束时要评估的表达式。这发生在下一次条件评估之前。通常用于更新或增加计数器变量。
因此,您的计数器会在循环结束时递增,并且观察到的行为是正确的。循环执行20,22,24,26,28,30,32和34。
答案 2 :(得分:0)
它会运行8次,x
遍历20到34之间的每个偶数。如果有帮助,你可以这样写:
var x = 20;
while (x <= 34) {
// do something
x += 2;
}
但是,请务必注意,在循环运行后(无论您使用的是for
还是while
版本),x
将等于36,因为它会增加在它最终未通过测试之前;在循环内部,x
永远不会等于36.就最佳实践而言,你应该只在循环中使用像x
这样的计数器变量;这可以通过使用ES6 let
关键字(块范围)来强制执行(该示例只打印出x
值列表作为DOM元素:
function appendSpanCounter(i, end) {
let el = document.createElement("span"),
content = i.toString(10);
if (i < end) content += ", ";
(typeof el.textContent === "string") // ternary operator
? el.textContent = content
: el.innerText = content;
(document.body || document.querySelector("body")).appendChild(el);
}
for (let x = 20; x <= 34; x += 2) {
appendSpanCounter(x, 34);
}
// x is now undefined here
答案 3 :(得分:0)
当开始循环时,将+ +添加到x,如下所示:
x = 20;
for (x = 20+2; x<35; x+=2) {
document.write("How many times will this loop execute?" + "<br/>");
};
答案 4 :(得分:0)
<强>脚本:强>
x = 20;
count = 1;
for (x = 20; x < 35; x += 2){
document.write("Execution: "+ (count++)+ "<br/>");
};
<强>输出强>
循环执行总共8次。
Execution: 1 Execution: 2 Execution: 3 Execution: 4 Execution: 5 Execution: 6 Execution: 7 Execution: 8
答案 5 :(得分:0)
是的,正在执行8次,因为在2 x 2中是20到35
x = 20;
for (x = 20; x < 35; x += 2) {
document.write("Execute for " + x + " " + "<br/>");
};
/*
OUTPUT:
Execute for 20
Execute for 22
Execute for 24
Execute for 26
Execute for 28
Execute for 30
Execute for 32
Execute for 34
*/
如果您想要7次,则可以更改为 34
x = 20;
for (x = 20; x < 34; x += 2) {
document.write("Execute for " + x + " " + "<br/>");
};