基本數值型別:傳值;
引用型別:嚴格來說不能算傳引用,在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,重新指向其他物件,不會影響到呼叫方。直接上 更好的理...