JS的引用傳遞

2021-09-11 11:05:30 字數 747 閱讀 7783

說到js函式引數傳遞的時候,我們經常會說普通型別(int,string等)是複製傳遞,複雜型別(array,object等)是引用傳遞。

看下js裡面的引用傳遞:

var obj1 =

function

test

(obj)

return obj;

}obj2 =

test

(obj1)

;console.

log(obj1)

;console.

log(obj2)

;//?

//?

不執行上述**,想下結果是什麼。

如果執行的結果跟預想的不一樣,接著往下看。

/*

obj1是乙個物件,有乙個位址addr1指向這個物件

我們進行obj1.name = '***x'時,其實是通過這個addr1在操作這個物件

*/var obj1 =

function

test

(obj)

return obj;

}//obj2也是指向addr2

obj2 =

test

(obj1)

;console.

log(obj1)

;console.

log(obj2);//

////

所謂的引用傳遞,其實是「複雜型別記憶體位址的複製傳遞」。

JS基礎 引用型別的引數傳遞

ecmascript中所有函式的引數都是按值傳遞的。可以把ecmascript函式的引數想象成區域性變數。ecmascript中所有函式的引數都是按值傳遞的。也就是說,函式的傳參,就和基本型別變數的複製一樣,而引用型別值的傳遞,則如同引用型別變數的複製一樣。這裡可能會使很多人感到困惑,因為訪問變數有...

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

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 fun...

JS中函式引數值傳遞和引用傳遞

也許大家對於函式的引數都不會太在意,簡單來說,把函式外部的值複製給函式內部的引數,就和把值從乙個變數複製到另乙個變數一樣。深入研究,你會發現其實沒那麼簡單,這個傳參是要分倆種情況 其實這是個錯誤的說法,ecmascript中所有函式的引數都是按值傳遞的 高程3 原話,之所以這裡說倆種,是因為結合引用...