From 57fe8c62fc3c282df0dfb61156edeccc511a4815 Mon Sep 17 00:00:00 2001 From: sikaco Date: Wed, 8 Mar 2017 19:15:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9let.md=E4=B8=AD=E4=B8=8D?= =?UTF-8?q?=E5=A4=9F=E5=85=B7=E4=BD=93=E7=9A=84=E6=96=87=E5=AD=97=E8=A1=A8?= =?UTF-8?q?=E8=BF=B0=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=A4=BA=E4=BE=8B=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BD=BF=E5=85=B6=E6=9B=B4=E7=B2=BE=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/let.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/let.md b/docs/let.md index 5088a68..7c42ed9 100644 --- a/docs/let.md +++ b/docs/let.md @@ -41,9 +41,9 @@ for (var i = 0; i < 10; i++) { a[6](); // 10 ``` -上面代码中,变量`i`是`var`声明的,在全局范围内都有效。所以每一次循环,新的`i`值都会覆盖旧值,导致最后输出的是最后一轮的`i`的值。 +上面代码中,变量`i`是`var`声明的,在全局范围内都有效,所以全局只有一个变量`i`。每一次循环,变量`i`的值都会发生改变,而循环内被赋给数组`a`的`function`在运行时,会通过闭包读到这同一个变量`i`,导致最后输出的是最后一轮的`i`的值,也就是10。 -如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。 +而如果使用`let`,声明的变量仅在块级作用域内有效,最后输出的是6。 ```javascript var a = []; @@ -559,7 +559,7 @@ foo.prop = 123; ```javascript var constantize = (obj) => { Object.freeze(obj); - Object.keys(obj).forEach( (key, value) => { + Object.keys(obj).forEach( (key, i) => { if ( typeof obj[key] === 'object' ) { constantize( obj[key] ); }