W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
有一個js的函數,其參數是一個object
型的數據,如果在函數內部使用另外一個對象將其覆蓋,會發(fā)生什么事情呢?
現在有一個Javascript函數,如下:
var setName = function(arg) {
arg.name = 'Wangcai';
arg = new Object();
arg.name = '9527';
};
var dog = new Object();
setName(dog);
console.log(dog.name);
結果:
Wangcai
這是為什么呢?
因為在函數setName
中,將dog
作為實參傳入,在函數內部修改dog
的name
屬性,此時dog
的值為{name: "WangCai"}
,緊接著,又new
了一個新的對象覆蓋了形參arg
,并且隨后改寫了arg.name
。
其實此時的arg
與一開始傳入的形參arg
已經不是同一個對象了,前者為傳入的形參,后者為函數內容的局部變量。
引用《Javascript高級程序設計》書中的一句話:
當在函數內部重寫引用對象
arg
時,這個變量引用的就是一個局部對象了。而這個局部對象會在函數執(zhí)行完畢后立即銷毀。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: