我试图理解这两种写循环方式之间的区别。两个代码片段的结果是不同的。为什么呢?
for循环:输出变量在循环内部,给出不同的结果。
for (var n = 1; n <= 100; n++) {
var output = "";
if ( n % 3 == 0)
output += "Fizz";
if (n % 5 == 0)
output += "Buzz";
console.log(output || n);
}
for循环:输出变量在循环外,给出不同的结果。
var output = "";
for (var n = 1; n <= 100; n++) {
if ( n % 3 == 0)
output += "Fizz";
if (n % 5 == 0)
output += "Buzz";
console.log(output || n);
}
答案 0 :(得分:1)
在这两种情况下,output
的声明都被视为在循环之外。然而,重要的是output
的初始化:
var output = "";
将变量设置为空字符串(""
)。如果将初始化放在循环中,则在每次迭代开始时清除变量的值。这消除了上一次迭代尝试做的所有工作。
因此,假设您的代码出现在某个函数中,第一个示例将被解释为编写它:
function whatever() {
var output;
// ...
for (var n = 1; n <= 100; n++) {
output = "";
if ( n % 3 == 0)
output += "Fizz";
if (n % 5 == 0)
output += "Buzz";
console.log(output || n);
}
// ...
}
显然,在每次迭代开始时将变量设置回""
会失败循环的整个点。