我正在阅读 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;
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么第一个是不好的做法,第二个是不好的,如果 let 和 var 都是块作用域,那么如果我使用它们中的任何一个,它有什么区别?
函数作用域和块作用域之间有什么区别?
小智 4
当某些东西是块作用域时,这意味着您可以更好、更直观地控制生命周期
例如
function a() {
if (true) {
var a = 7;
let b = 42;
}
}
Run Code Online (Sandbox Code Playgroud)
var a 在函数范围内被拉出,而不是在 if 块中隔离,就像这样;
function a() {
var a; // The JS compiler pulls the var out to this level
if (true) {
a = 7;
let b = 42; // but keeps the let in this block.
}
}
Run Code Online (Sandbox Code Playgroud)
..这是违反直觉的,有时会导致问题——但let没有这个问题。
| 归档时间: |
|
| 查看次数: |
5782 次 |
| 最近记录: |