From 9a66ab3d9e08a06be1711a5b69aeb85c1f2dab68 Mon Sep 17 00:00:00 2001 From: ruanyf Date: Wed, 30 Sep 2015 08:41:56 +0800 Subject: [PATCH] edit let --- docs/let.md | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/docs/let.md b/docs/let.md index dd9ad5e..fc1590f 100644 --- a/docs/let.md +++ b/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; -} +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`。