【发布时间】:2016-09-04 14:41:12
【问题描述】:
我正在阅读 Airbnb (https://github.com/airbnb/javascript) 的 javascript 样式指南。
在2.2节中解释了
let 是块作用域,而不是像 var 那样的函数作用域。
// bad
var count = 1;
if (true) {
count += 1;
}
// good, use the let.
let count = 1;
if (true) {
count += 1;
}
我不明白为什么第一个是不好的做法,第二个是不好的,如果 let 和 var 都是块作用域,那么如果我使用它们中的任何一个,它有什么区别?
另外,函数作用域和块作用域有什么区别?
【问题讨论】:
-
对我来说似乎是个错误。 var 和 let 应该在 if 中才有意义。
-
可能是重复的。见:stackoverflow.com/a/11444416/1715004
-
"如果 let 和 var 都是块作用域" — 它们不是,这就是重点。
-
该指南似乎在说永远不能使用 var。
-
我认为您只是误解了“let 是块作用域而不是函数作用域(如 var)”的含义。更清晰的措辞是“let 是块作用域,而 var 是函数作用域。”
标签: javascript