05-块作用域
7.4 块作用域
let和const关键字声明的变量名处在块作用域中。回忆第5章的内容:块是由一对花括号括起来的一系列语句。那么,块作用域指的就是那些仅仅在代码块内有效的变量。
console.log('before block');
{
console.log('inside block');
const x = 3;
console.log(x): // 打印3
}
console.log('outside block; x=${x}'); // ReferenceError: x 未定义
这里有一个独立的块:块通常是控制流语句的一部分,例如 if
或 for
,但定义独立的块也是合法的。在块内定义了变量 x
,一旦出了此块, x
就不在作用域内,就会被认为是未定义。
大家可能记得,在第4章中讲到一些独立块的使用,它们可以用来控制作用域(跟在本章中将看到的一样),但这通常是不必要的。不过借助它们来解释作用域的工作原理却非常方便,这就是本章中使用了它们的原因。