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


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