JavaScript中函數按值傳遞的解釋

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的值。


圖示:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章