js中传递参数问题

来源:互联网 发布:mac版word删除空白页 编辑:程序博客网 时间:2024/06/15 09:31
ECMAScript中所有函数的参数都是按值传递
访问变量有按值和按引用两张方式,而参数只能按值传递
例子:
function addTen(num){
num  += 10;  //在函数内部,参数num的值被加上了10,但这一变化不会影响函数外部的count变量
return num;
}
var count = 20;
var result = addTen(count);
alert(count);   //20,没有变化,如果是按引用传递那会变成30

alert(result); //30


如果使用对象,就不是很好理解


例子:
function setName(obj){
obj.name = "Nicholas";
obj = new Object();
obj.name = "Grey";
}

var person = new Object();
setName(person);

alert(person.name);//"Nicholas"

如果person是按引用传递的,nameperson就会自动被修改为指向其name属性值为“Grey”的新对象。

但是,结果显示为“Nicholas”。这说明即使在函数内部修改了参数的值,但原始的引用仍然保持未变。

实际上,当在函数内部重写obj时,这个变量引用的就是一个局部对象。而这个局部对象会在函数执行完毕后立即被销毁。