我对while loop
的逻辑感到有些困惑。假设这样一个最小的代码:
var i = 1; // Set counter to 1
var msg = ''; // Message
// Store 5 times table in a variable
while (i < 10) {
msg += i + ' x 5 = ' + (i * 5) + "\n";
i++;
}
console.log(msg) // the console is placed out of {}
运行它并来:
1 x 5 = 5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
7 x 5 = 35
8 x 5 = 40
9 x 5 = 45
我猜测它只会输出:
9 x 5 = 45
因为,while循环在i = 9时停止,console.log(msg)
在while循环结束后实现,因为它不在{}之内,
然而,结果超出了我的预期。如何理解?
答案 0 :(得分:3)
msg += i + ' x 5 = ' + (i * 5) + "\n";
该行针对每个数字运行,并且您追加到字符串。字符串保持在1-9的每一行,最后当你执行console.log时,它删除了整个字符串。将console.log放在里面,看看每个循环中的字符串都在增加。像1,然后1,2然后1,2,3等等。
答案 1 :(得分:1)
您msg
仅打印一次,但您要以格式化方式将每个结果附加到msg
字符串,即添加/n
以便下一个结果将以新行显示
因此,如果您只想打印9 x 5 = 45
,请使用以下代码:
msg = i + ' x 5 = ' + (i * 5) + "\n";
演示如下:
var i = 1; // Set counter to 1
var msg = ''; // Message
// Store 5 times table in a variable
while (i < 10) {
msg = i + ' x 5 = ' + (i * 5) + "\n";
i++;
}
console.log(msg) // the console is placed out of {}
&#13;
如果要打印完整的表格,请保持原样:
msg += i + ' x 5 = ' + (i * 5) + "\n";
演示如下:
var i = 1; // Set counter to 1
var msg = ''; // Message
// Store 5 times table in a variable
while (i < 10) {
msg += i + ' x 5 = ' + (i * 5) + "\n";
i++;
}
console.log(msg) // the console is placed out of {}
&#13;