将结果变量保留在for循环之外(Javascript)的区别是什么?
what is the difference between keeping result variable outside the for loop (Javascript)?
我试图理解这两种循环编写方式的区别。这两个代码片段的结果是不同的。为什么?
-
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); }
在这两种情况下,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);
}
// ...
}
显然,在每次迭代开始时将变量设置回""
会破坏循环的整个意义。
相关文章:
- JavaScript中的函数和对象之间没有区别吗?
- javascript函数的:和=之间的区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- Math.min()和Math.max()之间有什么区别?在Javascript中
- 使用Rhino和ASE执行Javascript的区别
- Javascript 类型未定义和 void 之间的区别
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 布局引擎和javascript引擎之间的区别
- 以下两者在javascript中有什么区别
- type=text/javascript和language=javascript之间的区别
- JavaScript中let和var之间的区别
- JavaScript 中的符号传播右移和零填充右移之间的区别
- 在Javascript语法中:和::和:::有什么区别
- JavaScript承诺的定义以及与事件的区别
- 什么's使用链接和脚本标记引用JavaScript源之间的区别
- 在javascript中,在变量名之前使用var有什么区别/优势吗
- javascript getTime()和Java getTime(()之间的区别
- JavaScript:Date 的 toString() 和 toLocaleString() 方法之间的区别
- onChange 和 onSubmit 之间的 JavaScript 区别
- 函数和新函数之间的JavaScript区别