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