ECMAScript 6 新增 const 和 let 指令,用來聲明變量。
聲明方式 | 變量提升 | 作用域 | 初始值 | 重複定義 |
const | 否 | 塊級 | 需要 | 不允許 |
let | 否 | 塊級 | 不需要 | 不允許 |
var | 是 | 函數級 | 不需要 | 允許 |
變量提升:const 和 let 必須先聲明再使用,不支援變量提升
?
1 2 3 4 5 6 7 | |
作用域:const,let 支援塊級作用域,有效避免變量覆寫
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
塊級作用域,在外層不能直接通路内層變量
?
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
const 定義常量,該常量不能指派,但該常量的屬性可以指派
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | |
全局變量不再設定為頂層對象(window)的屬性,有效避免全局變量污染
?
1 2 3 4 5 6 7 8 | |
符合預期的 for 循環
?
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
可以看到在 for 循環中使用 let 方式聲明變量才是符合預期。
在 for 中每一次循環,let 都是重新聲明變量,并且因為 JavaScript 引擎會記住上一次循環的值,初始化 i 時在上一輪的基礎上計算。
可以看到在 for 循環中至少有兩層作用域,看下面的例子更容易了解。
?
1 2 3 4 5 6 7 8 9 10 | |
初始值:const 聲明的變量必須設定初始值,且不能重複指派。
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
重複定義:const 和 let 不支援重複定義
const、let 縮小了變量作用域,完美避免變量污染;const 固定變量(即固定變量類型),對于弱類型 JavaScript 來說,可以明顯提升性能。推薦在應用中使用 const、let 聲明變量。
總結
以上就是這篇文章的全部内容了,希望本文的内容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支援。
原文連結:https://blog.zhengxianjun.com/2017/06/javascript-const-let-var/