克服JS - 傳值和傳參考
神奇的傳值與傳參考,指的是JS在"複製"一個變數的時候,所採取的方式。
大多都是以下這種傳值的方式在運作。
//by value var a = 3; var b; b = a; a = 2; console.log(a); //2 console.log(b); //3不過碰到了物件(包含陣列),就是傳參考了。
d與c都是代表同一個物件,所以更改其中一個,都會互相影響。
// by reference
var c = { greeting: 'hi' };
var d;
d = c;
d.greeting = 'hello';
console.log(c.greeting); // 'hello'
//by reference
function changeGreeting(obj) {
obj.greeting = 'Hola';
}
changeGreeting(d);
console.log(c.greeting); //'Hola'
console.log(d.greeting); //'Hola'
那要怎麼只複製物件的值呢?可以使用
b = Object.assign({}, c);
reference: Udemy 克服JS的奇怪部分
留言
張貼留言