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>循环还有一个特别之处,就是循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。
不存在变量升级:
报错: