使用 function 時的注意事項
物件址參器
變數可以保存字串、數字和布林值之類的基本值,但它無法保存物件。然而,它可以保存物件的址參器(reference)。所以我們會把物件稱為「址參器變數」。當你傳遞物件給一個函式,函式所取得的是該物件之址參器的一個副本,而不是物件本身的一個副本。
——深入淺出JavaScript程式設計
3種情形比較
第1種
function addValue(obj) {
obj.number++
return 1
}
var a = {
number: 10
}
addValue(a)
console.log(a)
//{number : 11}
第2種
function addValue(obj) {
obj = {
number:100
}
return 1
}
var a = {
number: 10
}
addValue(a)
console.log(a)
//{number : 10}
第3種
function addValue(obj) {
obj.test = 1
return 1
}
var a = {
number: 10
}
addValue(a)
console.log(a)
//{number : 10, test : 1}