diff --git a/docs/let.md b/docs/let.md index 741e876..973b1c4 100644 --- a/docs/let.md +++ b/docs/let.md @@ -73,6 +73,18 @@ for (let i = 0; i < 3; i++) { 上面代码正确运行,输出了 3 次`abc`。这表明函数内部的变量`i`与循环变量`i`不在同一个作用域,有各自单独的作用域。 +`let`声明变量不能出现在单行语句作用域中,在单行语句中使用`let`将会报错。 + +``` +// 报错 +if (true) + let a = 0; + +// 报错 +for (let i = 0; i < 3; i++) + let a = 0; +``` + ### 不存在变量提升 `var`命令会发生“变量提升”现象,即变量可以在声明之前使用,值为`undefined`。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。 @@ -195,6 +207,15 @@ function func() { let a = 10; let a = 1; } + +// for循环内外有三个不同的作用域,不报错 +function func() { + let arr = [1,2,3]; + let i = 4; + for(let i in arr){ + let i = 0; + } +} ``` 因此,不能在函数内部重新声明参数。