9.2 通过 letconst 实现块级作用域

letconst 创建的变量都是块级作用域:它们只存在于包围它们的最深的代码块中。以下的代码表明了 let 声明的变量 tmp 仅仅存在于 if 声明内部。

function func() {
    if (true) {
        let tmp = 123;
    }
    console.log(tmp); // ReferenceError: tmp is not defined
}

相比之下,var 声明的变量是函数域:

function func() {
    if (true) {
        var tmp = 123;
    }
    console.log(tmp); // 123
}

块级作用域意味着你能在函数中重复声明变量(shadow variables):

function func() {
  let foo = 5;
  if (···) {
     let foo = 10; // shadows outer `foo`
     console.log(foo); // 10
  }
  console.log(foo); // 5
}

results matching ""

    No results matching ""