js 函式引數傳值 傳引用

2021-10-20 06:13:56 字數 744 閱讀 2223

基本數值型別:傳值;

引用型別:嚴格來說不能算傳引用,在js中叫按共享傳遞 call by sharing也叫按物件傳遞、按物件共享傳遞。 該策略的重點是:呼叫函式傳參時,函式接受物件實參引用的副本(既不是按值傳遞的物件副本,也不是按引用傳遞的隱式引用)。 

它和按引用傳遞的不同在於:在共享傳遞中對函式形參的賦值,不會影響實參的值。如下面例子中,不可以通過修改形參o的值,來修改obj的值。

示例**如下:

var obj = ;

function foo(o)

foo(obj);

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

然而,雖然引用是副本引用的物件是相同的。它們共享相同的物件(位址),所以修改形參物件的屬性值,也會影響到實參的屬性值。

var obj = ;

function foo(o)

foo(obj);

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

總之:

js中的引用型別「」傳引用「」實際是傳共享,

即:位址的副本,所以在函式裡面對地質的修改不會影響到外面,因為是位址的 副本

但是,又因為位址指向的是同乙個內容,所以對「內容」即物件屬性的修改會影響到外面。

java引數傳值 傳引用

1 結論 2 傳值和傳引用區別 例項1 傳值 void method1 7 void method2 13 voidchange1 stringbuffer sb 17 voidchange2 stringbuffer sb 呼叫method1 螢幕列印結果為 helloworld 呼叫method...

C 引數傳值 與 傳引用

在 c 中,函式引數的傳遞有兩種方式 傳值和傳引用。在函式的形參不是引用的情況下,引數傳遞方式是傳值的。傳引用的方式要求函式的形參是引用。傳值 是指,函式的形參是實參的乙個拷貝,在函式執行的過程中,形參的改變不會影響實參。例如下面的程式 include using namespace std voi...

傳值 傳值引用

首先對傳值和傳引用要有個基本的概念 傳值 傳遞的是值的副本。方法中對副本的修改,不會影響到呼叫方。傳引用 傳遞的是引用的副本,共用乙個記憶體,會影響到呼叫方。此時,形參和實參指向同乙個記憶體位址。對引用副本本身 物件位址 的修改,如設定為null,重新指向其他物件,不會影響到呼叫方。直接上 更好的理...