将结果变量保持在for循环(Javascript)之外有什么区别?
我试图理解这两种编写循环的方法之间的区别。两个代码段的结果是不同的。为什么?将结果变量保持在for循环(Javascript)之外有什么区别?,javascript,variables,for-loop,Javascript,Variables,For Loop,我试图理解这两种编写循环的方法之间的区别。两个代码段的结果是不同的。为什么? 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); } var output = ""; 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);
}
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);
}
for(var n=1;n在这两种情况下,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);
}
// ...
}
函数{
var输出;
// ...
对于(var n=1;n1.如果您有不同的结果,您应该澄清它们。2.在第一种情况下,output
在每次迭代时被重新初始化为空字符串。这实际上与范围无关,与初始化有关。变量声明(如var output
)被提升到顶部。赋值(如output=“”
不是。你真的想了解差异吗?然后(手动)展开循环,至少3-4次迭代。这应该会显示出差异。如果它在循环外部,它会做什么?@K.Kaur如果它在循环外部,初始化只会在循环开始之前进行一次。感谢你让它变得易懂!