摘要:在的屬性值改變了以后,的值是隨著對象的改變而改變了,但是的值卻并沒有改變。也就是說定義的對象,當對象改變了之后,定義的值也會跟著改變。
es6中新增了一個const。就是用來定義一個常量的。以前其實一直沒有把這個放在 心上,覺得就是定義一個常量的,很easy,沒有什么可以深入的。
問題來了:
let obj = {"num1" : 20, "num2" : 30} const obj1 = obj const num = obj.num1 obj.num1 = 40
那么,試問這時候如果輸出obj1 和 num的值,分別是多少呢?讓我們在谷歌瀏覽器中試驗一下
答案很顯而易見了。在obj的num1屬性值改變了以后,obj1的值是隨著對象的改變而改變了,但是num的值卻并沒有改變。也就是說:
const定義的對象,當對象改變了之后,const定義的值也會跟著改變。
cosnt定義的變量是一個對象的一個屬性值,但是當對象屬性值改變了以后,const定義的這個值并不會改變。
那么這是為了什么呢?
在計算機中,常量是放在棧中的,而對象是放在堆中的。對于對象賦值,const指向的僅僅是他的地址,cosnt僅僅是保證這個地址不改變,至于地址對應的數據,是可以進行改變的。舉個栗子,現在可能在外工作很多人都是租的房子,假如你住在a公寓的a單元101,cosnt就僅僅是保證他指向的是這個地址,至于你房子里住的是哪些人,他是不關心的。~
而如果定義一個簡單的數據類型,那這個數據他本身就是存在棧中的,所以不可以改變。
寫的有不合適的地方,歡迎指正,謝謝
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107808.html
摘要:對比常量聲明與聲明常量聲明與聲明,都是塊級聲明。最后一點全局塊級綁定與不同于的另一個方面是在全局作用域上的表現。塊級綁定新的最佳實踐在的發展階段,被廣泛認可的變量聲明方式是默認情況下應當使用而不是??偨Y與塊級綁定將詞法作用域引入。 var變量與變量提升 使用var關鍵字聲明的變量,無論其實際聲明位置在何處,都會被視為聲明于所在函數的頂部(如果聲明不在任意函數內,則被視為在全局作用域的頂...
摘要:最近剛剛看完了你不知道的上卷,對有了更進一步的了解。你不知道的上卷由兩部分組成,第一部分是作用域和閉包,第二部分是和對象原型。附錄詞法這一章并沒有說明機制,只是介紹了中的箭頭函數引入的行為詞法。第章混合對象類類理論類的機制類的繼承混入。 最近剛剛看完了《你不知道的 JavaScript》上卷,對 JavaScript 有了更進一步的了解。 《你不知道的 JavaScript》上卷由兩部...
摘要:我們將循環執行五次,每次將一個函數到數組中。只有當你理解了,才能給出正確的答案。讀者提到的兩個問題聲明的變量不是完全不可更改。不僅如此,而且有些最新的瀏覽器也還沒有支持。 譯者按: 使用let的確會比var安全很多。 原文: Why You Shouldn’t Use ‘var’ Anymore 譯者: Fundebug 為了保證可讀性,本文采用意譯而非直譯。 我已經使用ES2015(...
摘要:以往,在中聲明變量的唯一方式是使用關鍵字。這種行為會阻止變量被訪問,除非它們被聲明了。因此,將一個對象聲明為常量必須非常小心。之中,頂層對象的屬性與全局變量是等價的。從現在開始,建議放棄使用,改為使用和。 以往,在 JavaScript 中聲明變量的唯一方式是使用關鍵字 var。為了理解為何添加了 let 和 const,我們先看一個示例,了解使用 var 會帶來怎樣的麻煩。 var ...
為什么讀webpack源碼 因為前端框架離不開webpack,天天都在用的東西啊,怎能不研究 讀源碼能學到很多做項目看書學不到的東西,比如說架構,構造函數,es6很邊緣的用法,甚至給函數命名也會潛移默化的影響等 想寫源碼,不看源碼怎么行,雖然現在還不知道寫什么,就算不寫什么,看看別人寫的總可以吧 知道世界的廣闊,那么多插件,那么多軟件開發師,他們在做什么,同樣是寫js的,怎么他們能這么偉大 好奇...
閱讀 2950·2021-11-23 09:51
閱讀 3776·2021-11-22 15:29
閱讀 3226·2021-10-08 10:05
閱讀 1552·2021-09-22 15:20
閱讀 952·2019-08-30 15:56
閱讀 1069·2019-08-30 15:54
閱讀 733·2019-08-26 11:54
閱讀 2635·2019-08-26 11:32