js 數據類型轉換 垃圾處理機制

**

該篇文章是個人看教學視頻之後總結的

**

  • 1.首先看幾道題:

    百度面試題:

	let a = 12;
	let b =a;
	b = 13;
	console.log(a);//12

	let a = {n:12};
	let b = a;
	b["n"] = 13;
	console.log(a.n);//13

	let a = {n:12};
	let b =a;
	console.log(b.n);//12
	b = {n:13};
	console.log(b.n);//13
	console.log(a.n);//12

您能答出來嗎?
思路:
1.首先打開瀏覽器時,瀏覽器會開闢一個Ecstack(執行環境棧)棧內存(stack)
2.接着產生一個EC(global) 全局執行上下文(全局執行環境)
3.在全局執行環境中,聲明一個 VO(global)環境變量 。

存儲方式如下圖:
第一個:
在這裏插入圖片描述
第二個:
在這裏插入圖片描述
第三個:
在這裏插入圖片描述
沒看懂圖的可以在下方留言或者私信,我給大家解釋。

  • 2.數據類型轉換

騰訊面試題:

let result=1+null+true+undefined+"tyt"+false+[]+undefined+null;
console.log(result);// NaNtytfalse[]undefinednull

思路:沒有遇到字符串就轉爲數字,
 1+ null轉爲0
 1+ true 轉爲1
 2 + undefined 結果爲NaN
 遇到字符串 全按字符串操作來做

  • 3.數值比較

 JS中 = = 比較規則
 對象 = = 對象 比較地址
 對象 = = 字符串 對象變爲字符串
 NaN = = NaN NaN和他自己以及其他值都不等
 null = = undefined ==時爲true === 爲false 並且和其他任何值都不等
 剩下的只要兩個類型不同,最後都轉化爲數字

例子如下:

console.log([]==false); //true
console.log(![]==false); //true

不清楚可點開這個鏈接作爲參考https://www.jianshu.com/p/2c83eb413e81

  • 4.爲什麼typeof null 返回object?
     null 在存儲時爲000, 000被認爲是對象類型
     1 整型
     100 字符串
     110 布爾類型

  • 5.內存回收機制

 標記清除法:谷歌
週期性的對變量進行檢測,對不再使用的變量進行標記,在週期過後進行清除。
 引用清除法:IE
變量引用一次就給變量引用+1,不引用就-1,直到變量引用爲0;(弊端,很多情況下,數字不是很準確,導致很多應該被清除的沒有被清除, => 內存泄漏)

  • 堆內存釋放: 變量 = null;
  • 棧內存釋放:函數執行完,形成的執行上下文中(執行環境),沒有東西被上下文(環境)意外的東西佔用,此上下文就會從執行環境棧中移除(釋放);如果有佔用,則壓縮到棧的底部(沒有釋放
    => 閉包)

整理不易,希望看到的朋友幫忙點個贊,有什麼問題也可以一起交流討論。有什麼不對的希望您在下方留言,幫忙指出錯誤

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