首頁 > web前端 > 前端問答 > es6中let和const的差別有哪些

es6中let和const的差別有哪些

青灯夜游
發布: 2022-04-19 16:29:23
原創
5095 人瀏覽過

區別:1、let宣告的是變量,其值和型別都可以改變,而const宣告的是常數,不可以改變,不能重新賦值;2、let變量,宣告後可以不初始化,而const常數,一旦聲明,就必須立即初始化;3、const總是指向一個固定的位址,而let不固定。

es6中let和const的差別有哪些

本教學操作環境: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>
登入後複製

結果:會報錯

es6中let和const的差別有哪些

③ 不可重複宣告。

【相關推薦:javascript影片教學web前端

以上是es6中let和const的差別有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
es6
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板