我不明白这个答案的逻辑

时间:2016-07-29 00:21:29

标签: javascript for-loop

当我将代码[ document.write(text); ]置于下面的循环内部/外部时,我得到完全不同的答案,但无法弄清楚逻辑。尤其是里面显示的答案。这是为什么?

var text = "";

for (i = 0; i <= 10; i++) {

text += "The number is " + i + "<br>";
document.write(text);

}

这是我目前的答案

数字为0 数字是0 数字是1 数字是0 数字是1 这个数字是2 数字是0 数字是1 这个数字是2 这个数字是3 数字是0 数字是1 这个数字是2 这个数字是3 这个数字是4 数字是0 数字是1 这个数字是2 这个数字是3 这个数字是4 这个数字是5 数字是0 数字是1 这个数字是2 这个数字是3 这个数字是4 这个数字是5 这个数字是6 数字是0 数字是1 这个数字是2 这个数字是3 这个数字是4 这个数字是5 这个数字是6 这个数字是7 数字是0 数字是1 这个数字是2 这个数字是3 这个数字是4 这个数字是5 这个数字是6 这个数字是7 这个数字是8 数字是0 数字是1 这个数字是2 这个数字是3 这个数字是4 这个数字是5 这个数字是6 这个数字是7 这个数字是8 这个数字是9 数字是0 数字是1 这个数字是2 这个数字是3 这个数字是4 这个数字是5 这个数字是6 这个数字是7 这个数字是8 这个数字是9 数字是10

2 个答案:

答案 0 :(得分:0)

我想我理解......好吧,所以你希望它应该输出:

the number is 0
the number is 1
the number is 2
the number is 3
the number is 4
the number is 5
the number is 6
the number is 7
the number is 8
the number is 9
the number is 10

您正在做的是将每个输出附加到字符串,因此循环第一次传递的字符串是

the number is 0

在下一个传递中,您将添加字符串&#34;数字为1&#34;到你已经拥有的字符串...这使它成为

the number is 0
the number is 1

但是在循环的每次传递中,您输出的是字符串,因此您多次输出相同的行。

你可以这样做:

var text = "";

for (i = 0; i <= 10; i++) {
    text += "The number is " + i + "<br>";
}

document.write(text);

如果您打算在结尾处转储整个字符串,则不必在循环的每次迭代中输出。

答案 1 :(得分:0)

如果您希望输出

The number is 0
The number is 1
The number is 2
...
The number is 10

您需要在循环结束时输出,或者只是在每次迭代时输出而不使用+=

它们具有相同的输出:

var text = "";
for (var i = 0; i <= 10; i++) {
    text += "The number is " + i + "<br>";
}
document.write(text);

for (var i = 0; i <= 10; i++) {
    document.write("The number is " + i + "<br>");
}

同样,这些都有你不想要的输出:

var text = "", allText = "";
for (var i = 0; i <= 10; i++) {
    text += "The number is " + i + "<br>";
    allText += text;
}
document.write(allText);

var text = "";
for (var i = 0; i <= 10; i++) {
    text += "The number is " + i + "<br>";
    document.write(text);
}