JS按值傳遞與按引用傳遞小結

2021-08-14 23:46:55 字數 635 閱讀 4967

js的基本型別,是按值傳遞的。

var a = 1;

function foo(x)

foo(a);

console.log(a); // 仍為1, 未受x = 2賦值所影響

再來看看物件的傳遞:

var obj = ;

function foo(o)

foo(obj);

console.log(obj.x); // 3, 被修改了!

var obj = ;

function foo(o)

foo(obj);

console.log(obj.x); // 仍然是1, obj並未被修改為100.

基本型別是按值傳遞,而對於物件來說傳入的是物件指向的位址,也可以認為其是特殊的按值傳遞。如果在函式內對物件的屬性進行操作,實際就是對其指向物件的屬性進行操作。但是,如果對其整體進行操作(比如:o = 100或者o = ),其實際是新定於了物件,實參的引用位址為新的物件的引用位址,與原來的引用沒有任何關係,所以不會對原來的物件造成改變。

JavaScript 按值傳遞 按引用傳遞

1 值的比較 引用的比較 首先,原始值的比較是值的比較 只有在它們值相等的時候它們才相等 比如簡單的 var a1 10 var a2 10 console.log a1 a2 true 其次,物件的比較並非值的比較 物件的比較均是引用的比較,當且僅當它們引用同乙個基物件時,它們才相等。即使兩個物件...

按值傳遞和按引用傳遞

對於基本型別而言,是按值傳遞的 基本型別儲存在棧中 基本型別引數的傳遞和基本型別的複製一樣,傳遞的是值本身 var a 1 function test x test a console.log a 1按值傳遞的意思就是形參是實參的複製,形參實參互不干擾 so,雖然在函式test中a被修改,但是並沒有...

Java按值傳遞和按引用傳遞

如果傳遞引數是基本型別或其包裝類,則按值傳遞,改變引數的值,實際引數的值不變。public static void main string args public static void changei integer i 如果傳遞引數是類或陣列,則按引用傳遞,改變物件的引用,實參的引用不會改變,但...