Js 中的原始值和引用值

2021-08-21 09:03:09 字數 1095 閱讀 4315

最近開始注重自己的基礎知識,以前總是覺得自己什麼都要會一點,不精也沒關係,現在想想,感覺這種想法是錯誤的。一些最基本的基礎底層知識還是要很紮實的。

原始值即一些代表原始資料型別的值,也叫基本資料型別,首先說一下js中有哪些原始值,number,string,boolean,null,undefined這些基本資料型別都是原始值。原始值儲存在棧中。意思就是說,當乙個原始變數把值賦給另乙個原始變數時,只是把棧中的內容複製給另乙個原始變數,此時這兩個變數互不影響,即當乙個變數值改變時,另乙個變數不會因此而發生任何變化。

var a = 10 ;

var b = a ;

a = 20;

console.log(b); //輸出10 b的值不會因a的值的改變而該改變

引用值是指一些復合型別資料的值,包括object,function,array,regexp,data,引用值於原始值不同,引用值把引用變數儲存在棧中,而實際的物件儲存在堆中。每乙個引用變數都有一根指標指向其堆中的實際物件。

var a = [1,2,3] ;  

var b = a ;

a.push(4) ;

console.log(b) ; //輸出1,2,3,4

a = [12] ;

console.log(b) ; //輸出1,2,3,4

console.log(a) ; //輸出12

如圖2所示,引用值a賦值給b時,各自的變數名儲存在棧中,而實際物件值都指向堆中的同乙個位址,當變數a通過方法改變值時,實際上時改變堆中內容,因此,此時b的值也會相應的改變。

如圖3所示,當a通過非方法改變值時,系統會為該引用變數重新建立乙個堆房間,此時,a的指標指向新的堆位址。

JS變數的原始值和引用值

原始值型別 undefined null boolean number 和 string 型 引用值型別 object,array 函式 儲存在堆 heap 中的物件 什麼是棧?由作業系統自動分配釋放 存放函式的引數值,區域性變數的值等,存放一些基礎型別。什麼是堆?是為動態分配預留的記憶體空間 你可...

ECMAScript 原始值和引用值

原始值 儲存在棧 stack 中的簡單資料,直接儲存在變數訪問的位置 引用值 儲存在堆 heap 中的物件,儲存在變數處的值是乙個指標,指向儲存物件的記憶體處 為變數賦值時,ecmascript的解釋程式必須判斷該值是原始型別還是引用型別 ecmascript把字串看作引用型別 引用型別的引用值大小...

JS中原始值和引用值的儲存方式

在ecmascript中,變數可以存放兩種型別的值,即原始值和引用值 根據資料型別不同,有的變數儲存在棧中,有的儲存在堆中。具體區別如下 原始變數及他們的值儲存在棧中,當把乙個原始變數傳遞給另乙個原始變數時,是把乙個棧房間的東西複製到另乙個棧房間,且這兩個原始變數互不影響。引用值是把 引用變數的名稱...