克服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的奇怪部分

留言

這個網誌中的熱門文章

Django - admin 的設定筆記

[Python] 以folium製作臺灣百岳資訊地圖

交個筆友吧!老派的浪漫與科技之結合 - SLOWLY