區別:1、let宣告的是變量,其值和型別都可以改變,而const宣告的是常數,不可以改變,不能重新賦值;2、let變量,宣告後可以不初始化,而const常數,一旦聲明,就必須立即初始化;3、const總是指向一個固定的位址,而let不固定。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
let和const是在es6中新引入了兩種方式來申明變量的關鍵字,雖然我們仍然可以使用廣為傳誦的var變量,但是現在我們有了兩種更牛的工具去使用:let和const。
es6中let和const的區別
#① let宣告的是變數,其值和型別都可以改變;const宣告的是常量,其值和型別都不可以改變。
② let變量,宣告後可以不初始化,而const常數,一旦聲明,就必須立即初始化,不能以後再賦值。
const i ; // 报错,一旦声明,就必须立即初始化 const j = 5; j = 10; // 报错,常量不可以改变
③ const總是指向一個固定的位址,而let不固定
const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; foo.prop // 123 // 将 foo 指向另一个对象,就会报错 foo = {}; // TypeError: "foo" is read-only
上面程式碼中,常數foo儲存的是一個位址,這個位址指向一個物件。不可變的只是這個位址,即不能把foo指向另一個位址,但物件本身是可變的,所以依然可以為其添加新屬性。
說明:
數組和物件等複合類型的變量,變數名稱不指向數據,而是指向資料所在的位址。 const只保證變數名指向的位址不變,並不保證該位址的資料不變,所以將一個複合型別的變數宣告為常數必須非常小心。
const arr = []; // 报错,[1,2,3]与[]不是同一个地址 arr = [1,2,3]; const arr = []; // 不报错,变量名arr指向的地址不变,只是数据改变 arr[0] = 1; arr[1] = 2; arr[2] = 3; console.log(arr.length); // 输出:3
es6中let和const的相同點:
#① 只在宣告所在的區塊層級作用域內有效。
② 不存在宣告提升,同時存在暫時性死區,只能在宣告的位置後面使用。
<script type="text/javascript"> console.log(dadi); let dadi = 569; </script>
結果:會報錯
③ 不可重複宣告。
【相關推薦:javascript影片教學、web前端】
以上是es6中let和const的差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!