diff --git a/docs/let.md b/docs/let.md index 941023e..de2c96e 100644 --- a/docs/let.md +++ b/docs/let.md @@ -75,11 +75,11 @@ if (1) { } ``` -上面代码中,由于块级作用域内typeof运行时,x还没有值,所以会抛出一个`ReferenceError`。 +上面代码中,由于块级作用域内`typeof`运行时,`x`还没有值,所以会抛出一个`ReferenceError`。 ### 暂时性死区 -只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 +只要块级作用域内存在`let`命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。 ```javascript var tmp = 123; @@ -90,9 +90,9 @@ if (true) { } ``` -上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。 +上面代码中,存在全局变量`tmp`,但是块级作用域内`let`又声明了一个局部变量`tmp`,导致后者绑定这个块级作用域,所以在`let`声明变量前,对`tmp`赋值会报错。 -ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些命令,就会报错。 +ES6明确规定,如果区块中存在`let`和`const`命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些命令,就会报错。 总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。 @@ -110,7 +110,7 @@ if (true) { } ``` -上面代码中,在let命令声明变量tmp之前,都属于变量tmp的“死区”。 +上面代码中,在`let`命令声明变量`tmp`之前,都属于变量`tmp`的“死区”。 有些“死区”比较隐蔽,不太容易发现。 @@ -122,7 +122,7 @@ function bar(x = y, y = 2) { bar(); // 报错 ``` -上面代码中,调用bar函数之所以报错,是因为参数x默认值等于另一个参数y,而此时y还没有声明,属于”死区“。 +上面代码中,调用`bar`函数之所以报错,是因为参数`x`默认值等于另一个参数`y`,而此时`y`还没有声明,属于”死区“。 需要注意的是,函数的作用域是其声明时所在的作用域。如果函数A的参数是函数B,那么函数B的作用域不是函数A。 @@ -137,7 +137,7 @@ function bar(func = x => foo) { bar(); ``` -上面代码中,函数bar的参数func,默认是一个匿名函数,返回值为变量foo。这个匿名函数的作用域就不是bar。这个匿名函数声明时,是处在外层作用域,所以内部的foo指向函数体外的声明,输出outer。它实际上等同于下面的代码。 +上面代码中,函数`bar`的参数`func`,默认是一个匿名函数,返回值为变量`foo`。这个匿名函数的作用域就不是`bar`。这个匿名函数声明时,是处在外层作用域,所以内部的`foo`指向函数体外的声明,输出`outer`。它实际上等同于下面的代码。 ```javascript let foo = 'outer';