close
在js中 當assign value或object給一個變數時
myVar = x
如上把x assign給變數myVar
如果x是primitive type像是數字1,2,3,... 或是字串'abc'
則myVar是得到value的拷貝
所以如果改變x的值, myVar不會受到影響
如
var x = 1; // x:1
var myVar = x //myVar 1
x=2 //x: 2
log(myVar) //myVar: 1
因為myVar是取得拷貝的值 所以x改變 myVar不受影響
而如果今天y是個object
var y = { val: 3 } // y.val: 3
var theVal = y // theVal.val:3
y.val = 4 // y.val:4
log(theVal) //{ val: 4 }
此時由於y是個object, 所以theVal取得的會是y在記憶體中的參考位置
當y的內容被改變時 就是變記憶體中的值 所以theVal也就跟著改變
但承上如果assign一個新的object給y呢?
y = { val: 5 } // y.val: 5
log(theVal) // { val: 4}
因為y被assign的是一個新的記憶體位址 所以y會得到新的值
但theVal依然是存取舊的記憶體位址 所以不會變為5
文章標籤
全站熱搜