1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-25 11:12:21 +00:00
This commit is contained in:
ruanyf 2015-09-30 08:41:56 +08:00
parent 078a0a5f40
commit 9a66ab3d9e

View File

@ -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`