標籤:參考型別 obj 回收 堆記憶體 構造 false 棧記憶體 副本 儲存
一、基本類型和參考型別的值
動態屬性
建立對象:
1.建構函式建立:new Object
2.字面量建立:{}
對象添加屬性:對象.屬性名稱=值
對象添加方法:對象.方法名稱=function(){}
複製變數值
1.參考型別:如果是賦值的狀態,參考型別是公用一個對象則互相影響
2.基本類型:如果是賦值狀態,相當於是複製了一個副本
(複製版) 2個變數都是單獨的則互相不影響
c.傳遞參數
函數(參數) : 參數===》只能傳遞值
d.檢測類型
instanceof===》返回布爾值(對象 instanceof 檢測值(如String,Object))
如果匹配返回true
如果不匹配返回false
******javascript儲存**********
1.棧記憶體(基本類型)
2.堆記憶體(參考型別)
二、JS中的範圍
代碼(變數|函數)在某一個地方的作用
1.在全域範圍內,聲明的變數和函數,其實都是window對象的屬性或者方法
2.例如函數中聲明一個局部變數在全域中打不出來
JS中的範圍鏈
內部有權訪問外部的局部變數或者函數
外部不能訪問內部的局部變數或者函數
優先順序
1.先找本層(本範圍)===>逐級向外尋找
2.優先順序
變數--->函數--->參數---->提升
函數(聲明)===》不看執行順序的
聲明變數的事情
var a ===>局部a
window.a ====>全域a
a ====>屬於局部a,也屬於全域a
function fn(){
a = 10; ==>屬於內部,也屬於外部
console.log(a);
var a; //提升後把上面a =10不在是屬於內部和外部,只屬於內部了
}
fn();
三、JS 記憶體回收機制
1.標記清除
最常用的一種記憶體回收機制
2.引用計數
最不常用一種記憶體回收機制
3.手動清除
把不用的變數或者對象或者函數===》(賦值為)= null
javascript-範圍-記憶體