function setName(obj){
obj.name = "zhaosan";
}
var obj = new Object();
setName(obj);
alert(obj.name);
function setName(obj){
obj.name = "zhaosan";
obj = new Object();
obj.name = "lisi"
}
var obj = new Object();
setName(obj);
alert(obj.name);
第一個例子中輸出:zhaosan
第二個例子還是:zhaosan
解釋:
在JavaScript中所有函數都是按值傳遞的,可以把函數中的參數想象成局部變量。
因爲是按值傳遞,在第二個例子中setName()函數把參數傳遞進來是按值傳遞的,在函數內部把參數obj的值又指向另一個變量,由於僅僅是對象obj指向對象引用的值,所以改變函數內部變量obj的值不會影響對象obj的值。
圖示: