while循环完成但打印所有变量

时间:2018-06-19 02:21:37

标签: javascript

我对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循环结束后实现,因为它不在{}之内,

然而,结果超出了我的预期。如何理解?

2 个答案:

答案 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";

演示如下:

&#13;
&#13;
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;
&#13;
&#13;

如果要打印完整的表格,请保持原样:

  msg += i + ' x 5 = ' + (i * 5) + "\n";

演示如下:

&#13;
&#13;
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;
&#13;
&#13;