es6中新增了一個const。就是用來定義一個常量的。之前其實一直沒有把這個放在 心上,以爲就是定義一個常量的,很easy,沒有什麼能夠深刻的。es6
問題來了:瀏覽器
let obj = {'num1' : 20, 'num2' : 30} const obj1 = obj const num = obj.num1 obj.num1 = 40
那麼,試問這時候若是輸出obj1 和 num的值,分別是多少呢?讓咱們在谷歌瀏覽器中試驗一下spa
答案很顯而易見了。在obj的num1屬性值改變了之後,obj1的值是隨着對象的改變而改變了,可是num的值卻並無改變。也就是說:code
const定義的對象,當對象改變了以後,const定義的值也會跟着改變。對象
cosnt定義的變量是一個對象的一個屬性值,可是當對象屬性值改變了之後,const定義的這個值並不會改變。blog
那麼這是爲了什麼呢?ip
在計算機中,常量是放在棧中的,而對象是放在堆中的。對於對象賦值,const指向的僅僅是他的地址,cosnt僅僅是保證這個地址不改變,至於地址對應的數據,是能夠進行改變的。舉個栗子,如今可能在外工做不少人都是租的房子,假如你住在a公寓的a單元101,cosnt就僅僅是保證他指向的是這個地址,至於你房子裏住的是哪些人,他是不關心的。~it
而若是定義一個簡單的數據類型,那這個數據他自己就是存在棧中的,因此不能夠改變。class
寫的有不合適的地方,歡迎指正,謝謝變量