Skip to content

Commit

Permalink
update es6.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Yi-love committed May 6, 2016
1 parent 3866685 commit 99b36b1
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions _posts/2016-04-29-JavaScript-es6.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ let 与 var 都是用来定义变量的。var 全局范围有效,let局部有效
```

`let``var` 作用域区别:

```js
var arr = [];
for(var i = 0 ; i < 10 ; i++){
Expand All @@ -34,9 +35,11 @@ let 与 var 都是用来定义变量的。var 全局范围有效,let局部有效
}
arr[6]();//10
```

`i` 是全局的,所以都会输出最后i的值。

使用 `let`,声明的变量仅在块级作用域内有效,最后输出的是6。

```js
var arr = [];
for(let i = 0 ; i < 10 ; i++){
Expand All @@ -46,10 +49,12 @@ let 与 var 都是用来定义变量的。var 全局范围有效,let局部有效
}
arr[6]();//6
```

每次循环 `i` 都是一个新的变量。

#### 不存在变量提升
`let` 不像 `var` 变量。可以先使用后定义。

```js
console.log(a,b);//ReferenceError: b is not defined
var a = 10;
Expand All @@ -58,6 +63,7 @@ let 与 var 都是用来定义变量的。var 全局范围有效,let局部有效

#### 暂时性死区
只要块级作用域存在 `let`命令,它所声明的变量就会绑定在这个区域。

```js
var a = 123;
if(true){
Expand All @@ -67,6 +73,7 @@ let 与 var 都是用来定义变量的。var 全局范围有效,let局部有效
```

隐蔽的死区。

```js
function add(x = y, y = 2) {
return x+y;
Expand All @@ -76,6 +83,7 @@ add(); // 报错

#### 不允许重复声明
let不允许在相同作用域内,重复声明同一个变量。

```js
let a = 10;
let a = 1;
Expand All @@ -85,13 +93,15 @@ let不允许在相同作用域内,重复声明同一个变量。
const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。

普通模式:

```js
const c = 123;
c = 12;
console.log(c);//123
```

严格模式:

```js
'use strict';
const c = 123;
Expand All @@ -100,6 +110,7 @@ const也用来声明变量,但是声明的是常量。一旦声明,常量的
```

作用域:

```js
if(true){
const a =12;
Expand Down

0 comments on commit 99b36b1

Please sign in to comment.