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>循環還有一個特别之處,就是循環語句部分是一個父作用域,而循環體内部是一個單獨的子作用域。
不存在變量更新:
報錯: