又一道思考題

問題一:

從內存來看 null 和 undefined 本質的區(qū)別是什么?

個人解答:null 存放在堆內存中,undefined 存放在棧內存中,因為 null 是對象,V8引擎中的所有的JS對象都是通過堆來進行內存分配的。undefined是普通變量。

木易楊的解答:

給一個全局變量賦值為null,相當于將這個變量的指針對象以及值清空,如果是給對象的屬性賦值為null,或者局部變量賦值為null,相當于給這個屬性分配了一塊空的內存,然后值為null, JS會回收全局變量為null的對象。

給一個全局變量賦值為undefined,相當于將這個對象的值清空,但是這個對象依舊存在,如果是給對象的屬性賦值 為undefined,說明這個值為空值

問題二:

ES6語法中的 const 聲明一個只讀的常量,那為什么下面可以修改 const 的值?

const foo = {}; 
foo = {}; // TypeError: "foo" is read-only
foo.prop = 123;
foo.prop // 123

通常來講常量一般存放在池中,池也叫常量池,const 存的是常量,實際上是一個內存地址,上面的不可以直接給 foo 賦值,但是可以更改內存中的內容。

問題三:

哪些情況下容易產(chǎn)生內存泄露?

  • 對象引用對象,循環(huán)引用的情況
  • 聲明了很多全局,內存回收不容易判斷并回收
  • DOM 元素綁定
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,132評論 1 32
  • 這篇文章是我之前翻閱了不少的書籍以及從網(wǎng)絡上收集的一些資料的整理,因此不免有一些不準確的地方,同時不同JDK版本的...
    高廣超閱讀 15,677評論 3 83
  • 所有知識點已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數(shù)? 在 Jav...
    侯蛋蛋_閱讀 2,482評論 1 4
  • 上天賦予的生命,就是要為人類的繁榮、和平和幸福而奉獻。——松下幸之助 2018年6月14日是聯(lián)合國第14個世界獻血...
    笨企鵝1990閱讀 1,500評論 0 0
  • 風來風去 一地碎玉 飄落不表示遠離 多少初冬的詩句 埋伏在層疊交錯的葉里 風去風來 雪花皚皚 來慰這真情告白 這一...
    微雨憑欄閱讀 467評論 6 3