js 值和引用

2022-07-28 18:00:17 字數 838 閱讀 1099

js對值和引用的賦值/傳遞在語法上沒有區別,完全根據值得型別決定

簡單值(即標量基本型別值),總是通過值複製的方式來賦值/傳遞,包括null,undefined,字串,數字,布林值和es6中的symbol。

復合值——物件(包括陣列和封裝物件)和函式,則總是通過引用複製的方式來賦值/傳遞。

簡單值var a0=2;

var b0=a0;

b0++;

console.log(a0);//2

console.log(b0);//3

簡單值注意

雖然傳遞的是指向數字物件的引用複本,但我們並不能通過它來更改其中的基本型別值

function foo(x);

foo(obj);

console.log(obj.a);// 42

注意函式引數

function foo(x)

var e=[1,2,3];

foo(e);

console.log(e);//[1,2,3,4]而非[4,5,6,7]

我們像函式傳遞e的時候,實際是將引用e的乙個複本賦值給x,而a仍然指向[1,2,3].在函式中我們可以通過引用x來更改陣列的值(push(4)之後變為[1,2,3,4]).但x=[4,5,6]並不影響e的指向,所以e仍然指向[1,2,3,4].

不能通過引用x來更改引用e的指向,只能更改e和x的共同指向的值。

如果要將e的值變為[4,5,6,7],必須更改x指向的陣列,而不是為x賦值乙個新的陣列

function foo(x)

var e=[1,2,3];

foo(e);

console.log(e);//[4,5,6,7]

Js 中的原始值和引用值

最近開始注重自己的基礎知識,以前總是覺得自己什麼都要會一點,不精也沒關係,現在想想,感覺這種想法是錯誤的。一些最基本的基礎底層知識還是要很紮實的。原始值即一些代表原始資料型別的值,也叫基本資料型別,首先說一下js中有哪些原始值,number,string,boolean,null,undefined...

JS變數的原始值和引用值

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

js語言精粹之值和引用

var a 2 varb a b是a的乙個副本 b a 2b 3 基本資料型別是值複製 varc 1,2,3,4 var d c d是 1,2,3,4 的乙個引用 d.push 5 c 1,2,3,4,5 d 1,2,3,4,5 復合型別是引用複製 c和d分別指向乙個 1,2,3,4 的兩個不同的引...