1. 程式人生 > >JS函式引數傳遞

JS函式引數傳遞

JS中函式的共享傳遞,按值傳遞,引用傳遞

共享傳遞是實參物件的引用的副本 按值傳遞是實參的值的副本 引用傳遞是實參的引用 用c++裡面的知識來講就是共享傳遞是實參物件的指標的副本,按值傳遞是實參的值的副本,引用傳遞是實參的指標。如下圖

這裡寫圖片描述

function changeStuff(a, b, c) {
a = a * 10;//值的副本
b.item = "changed"; //b.item表示值的item,值裡面的item屬性變了
c = {item: "changed"};//指標副本指向{item: "changed"}
} 
var num = 10; 
var obj1 = {item: "unchanged"
}; var obj2 = {item: "unchanged"}; changeStuff(num, obj1, obj2); console.log(num); console.log(obj1.item); console.log(obj2.item); // 輸出結果 10 changed Unchanged

js中沒有引用傳遞,只有兩種

    基本資料型別傳遞到函式是按值傳遞,     引用資料型別傳遞到函式是共享傳遞

思考題:下面這裡輸出什麼呢?

var obj1={x:5};
var obj2=obj1;
obj1.a=obj1={x:6};
console.log(obj1.a);
console.log(obj2.a);