js傳遞參數給函數 參數的改變問題

js傳遞參數給函數


按值傳遞一個參數給函數。即使按引用傳遞對象和數組時,如果直接在函數中用新值覆蓋原先的值,在函數外並不反映新值。只有在對象的屬性或者數組的元素改變時,在函數外纔可以看出。


例如(使用 IE 對象模式):


// 本代碼段破壞(覆蓋)其參數,所以調用代碼中反映不出變化。
functionClobber(param) {    // 破壞參數;在調用代碼中看不到 
param = newObject(); 
param.message = "This will not work";
}
// 本段代碼改變參數的屬性,在調用代碼中可看到屬性改變。
functionUpdate(param){    // 改變對象的屬性; 
// 可從調用代碼中看到改變。 
param.message = "I was changed";
}
// 創建一個對象,並賦給一個屬性。
varobj = newObject();
obj.message = "This is the original";
// 調用 Clobber,並輸出 obj.message。注意,它沒有發生變化。
Clobber(obj);window.alert(obj.message);  //仍然顯示 "This is the original"。
// 調用 Update,並輸出 obj.message。注意,它已經被改變了。
Update(obj);window.alert(obj.message);  //顯示 "I was changed"。


本文來源於 雨劍電腦,原文地址:http://www.expert58.com/news/2055.html


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