克服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的奇怪部分
留言
張貼留言