对于以下代码,我得到了UNDEFINED,Entering Loop,UNDEFINED,0、0、1、1、2的信息。我理解为什么我只有一个2(我认为),但是我很难理解为什么两个0?
'use strict';
console.log(message);
console.log('Entering Loop');
for (var i = 0; i < 3; i++) {
console.log(message);
var message = 'number: ' + i;
console.log(message);
}
答案 0 :(得分:2)
您正在设置变量前后进行记录。 var
不会将变量限制为块,因此旧值仍然存在。在您的第一个循环迭代中,您将获得
undefined
number: 0
第二秒钟,您将获得
number: 0
number: 1
在最后一次迭代中,您会得到
number: 1
number: 2
执行循环时:在循环开始之前运行了第一部分(var i = 0;
)。第二部分(i < 3
)在每次迭代之前运行以确定是否继续,第三部分(i++
)在每次迭代之后运行。如果第二部分是正确的,则循环不会重新开始。这是展开的循环。
'use strict';
var message;
console.log(message); // "undefined"
console.log('Entering Loop');
var i = 0;
// loop if i < 3, i === 0
console.log(message); // "undefined"
message = 'number: ' + i;
console.log(message); // "number: 0"
i++; // i === 1
// loop if i < 3, i === 1
console.log(message); // "number: 0"
message = 'number: ' + i;
console.log(message); // "number: 1"
i++; // i === 2
// loop if i < 3, i === 2
console.log(message); // "number: 1"
message = 'number: ' + i;
console.log(message); // "number: 2"
i++; // i === 3
// loop if i < 3, i === 3
答案 1 :(得分:0)
进入循环,您的number
未定义。
在循环中将其设置为“数字= 0”。
再次进入循环number
仍设置为“数字= 0”,并被“数字= 1”覆盖。
再次进入循环number
仍设置为“ Number = 1”,并被“ Number = 2”覆盖。
i == 3再次进入循环,因此结束。
您可以轻松地用笔和一些纸来完成此操作。