天天看点

ECMAScript 6 -- let和const命令

ES6新增了<code>let</code>命令,用来声明变量。它的用法类似于<code>var</code>,但是所声明的变量,只在<code>let</code>命令所在的代码块内有效。

可以执行

就会报错

let var使用区别:

var:

结果:

变量<code>i</code>是<code>var</code>声明的,在全局范围内都有效,所以全局只有一个变量<code>i</code>。每一次循环,变量<code>i</code>的值都会发生改变,而循环内被赋给数组<code>a</code>的<code>function</code>在运行时,会通过闭包读到这同一个变量<code>i</code>,导致最后输出的是最后一轮的<code>i</code>的值,也就是10。

let:

6

变量<code>i</code>是<code>let</code>声明的,当前的<code>i</code>只在本轮循环有效,所以每一次循环的<code>i</code>其实都是一个新的变量,所以最后输出的是<code>6。</code>

<code>for</code>循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。

不存在变量升级:

报错:

继续阅读