mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2025-05-25 03:02:21 +00:00
edit let
This commit is contained in:
parent
078a0a5f40
commit
9a66ab3d9e
16
docs/let.md
16
docs/let.md
@ -4,7 +4,7 @@
|
||||
|
||||
### 基本用法
|
||||
|
||||
ES6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
|
||||
ES6新增了`let`命令,用来声明变量。它的用法类似于`var`,但是所声明的变量,只在`let`命令所在的代码块内有效。
|
||||
|
||||
```javascript
|
||||
{
|
||||
@ -16,9 +16,9 @@ a // ReferenceError: a is not defined.
|
||||
b // 1
|
||||
```
|
||||
|
||||
上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。
|
||||
上面代码在代码块之中,分别用`let`和`var`声明了两个变量。然后在代码块之外调用这两个变量,结果`let`声明的变量报错,`var`声明的变量返回了正确的值。这表明,`let`声明的变量只在它所在的代码块有效。
|
||||
|
||||
for循环的计数器,就很合适使用let命令。
|
||||
`for`循环的计数器,就很合适使用let命令。
|
||||
|
||||
```javascript
|
||||
for(let i = 0; i < arr.length; i++){}
|
||||
@ -27,9 +27,9 @@ console.log(i)
|
||||
//ReferenceError: i is not defined
|
||||
```
|
||||
|
||||
上面代码的计数器i,只在for循环体内有效。
|
||||
上面代码的计数器`i`,只在`for`循环体内有效。
|
||||
|
||||
下面的代码如果使用var,最后输出的是10。
|
||||
下面的代码如果使用`var`,最后输出的是10。
|
||||
|
||||
```javascript
|
||||
var a = [];
|
||||
@ -41,7 +41,7 @@ for (var i = 0; i < 10; i++) {
|
||||
a[6](); // 10
|
||||
```
|
||||
|
||||
如果使用let,声明的变量仅在块级作用域内有效,最后输出的是6。
|
||||
如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。
|
||||
|
||||
```javascript
|
||||
var a = [];
|
||||
@ -58,10 +58,8 @@ a[6](); // 6
|
||||
`let`不像`var`那样,会发生“变量提升”现象。
|
||||
|
||||
```javascript
|
||||
function do_something() {
|
||||
console.log(foo); // ReferenceError
|
||||
let foo = 2;
|
||||
}
|
||||
```
|
||||
|
||||
上面代码在声明`foo`之前,就使用这个变量,结果会抛出一个错误。
|
||||
@ -69,10 +67,8 @@ function do_something() {
|
||||
这也意味着`typeof`不再是一个百分之百安全的操作。
|
||||
|
||||
```javascript
|
||||
if (1) {
|
||||
typeof x; // ReferenceError
|
||||
let x;
|
||||
}
|
||||
```
|
||||
|
||||
上面代码中,由于块级作用域内`typeof`运行时,`x`还没有值,所以会抛出一个`ReferenceError`。
|
||||
|
Loading…
x
Reference in New Issue
Block a user