【发布时间】:2020-03-20 15:58:57
【问题描述】:
我在网站w3schools.com(JavaScript 最佳实践)上看到了这段代码
// Declare at the beginning
var i;
// Use later
for (i = 0; i < 5; i++) {
我不明白为什么声明这个变量被认为是好的做法。只有循环才需要它。为什么要让它全球化
【问题讨论】:
-
其实不是。您也应该避免使用全局变量和 w3schools(双关语)。使用 MDN 获得更好的解释和更新参考
-
无论如何它都是全局的(var 不会创建块作用域)。这实际上是(或曾经是) var 声明的建议,最好在其作用域的开头声明(不一定是全局的),因为无论如何都会提升声明,而后面的声明将被忽略。
-
w3schools 已经改进了,但是很长一段时间它显示的信息非常错误。我不会相信 w3schools 的最佳实践。至少在这种情况下使用
let而不是var。 -
可以,不过可以换成
let -
如果您正在寻找有关 javascript 的任何最佳实践,请使用 MDN
标签: javascript scope cycle