天天看點

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>循環還有一個特别之處,就是循環語句部分是一個父作用域,而循環體内部是一個單獨的子作用域。

不存在變量更新:

報錯:

繼續閱讀