1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-25 03:02: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
{
@ -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;
}
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
let x;
```
上面代码中,由于块级作用域内`typeof`运行时,`x`还没有值,所以会抛出一个`ReferenceError`