1. 区块 block 就是一对大括号:{}

    JavaScript 使用大括号,将多个相关的语句组合在一起,称为“区块”(block)。

    对于**var**命令来说,JavaScript 的区块不构成单独的作用域(scope)。

    1. {
    2. var a = 1;
    3. }
    4. a // 1

    上面代码在区块内部,使用var命令声明并赋值了变量a,然后在区块外部,变量a依然有效,区块对于var命令不构成单独的作用域,与不使用区块的情况没有任何区别。在 JavaScript 语言中,单独使用区块并不常见,区块往往用来构成其他更复杂的语法结构,比如forifwhilefunction等。

    虽然 block 对于 var 而言,写了跟没写一样,但是如果我们在 block 内使用 const、let 来声明变量,那么这些变量是具备块级作用域的,即这些使用 const、let 声明的变量只能在 block 内部被访问。

    1. if (true) {
    2. var varVariable = "Hello";
    3. let letVariable = "World";
    4. }
    5. console.log(varVariable); // 输出 "Hello"
    6. console.log(letVariable); // 报错 ReferenceError: letVariable is not defined