ES6學習(let,var,const)

我們現在爲什麼要選擇let、const,拋棄var呢?

作爲一個程序員,var簡直就是違背編程邏輯的一種用法。
JS會將聲明提前,而定義的值不會。

var time = 1;
var time = 2;

按理說,編譯器是不允許這樣的代碼出現的,會報already defined之類問題。
在js中,這竟然是允許的,所以說,在代碼量龐大的時候,我們很有可能是會忘記某一個變量是之前定義過的,後面的同名變量定義都會覆蓋之前的變量,後果是很嚴重的,如果你記憶力好的話,可以挑戰一下!

作用域

在這之前,我們有必要說明一下作用域問題。
var 是全局作用域或者是函數作用域,所以我們是在全局都可以取值的,並且是後面的變量定義會覆蓋前面的。
而let、const的作用域是塊作用域。
所以所,這兩種定義方式是不能重複定義的
而他倆之間的區別我們應該都知道,const是常量嘛,是不能修改的。

還有需要注意的一點,臨時性死區,在塊級作用域中,聲明要在使用之前。

值得注意的是,如果const定義了一個對象的話

const info = {
	"name":"xiaoming",
	"age" : 18
}

info.age = 20

如果儲存一個對象的話,其實儲存的是引用,是地址。
學習C的時候我們應該很明白這一塊,指針害人不淺
我們不可以修改該變量引用的對象,但是可以修改對象中的內容,如果連對象中的屬性也不能讓他修改的話,我們就要

const info = Object.freeze({"name":"peter","age":8
})

freeze就是凍結的意思嘛,所以就連屬性都不能修改了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章