ECMAScript�中所有的函数都是按值传递的。也就是说把函数外部的值赋值给函数内部的参数,就和把值从一个变量赋值到另一个变量一样。基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样。
在向参数传递基本类型的值时,被传递的值会被赋值给一个局部变量。
<code>
funtion addTen(num){
num+=10;
retuen num;
}
var count = 20;
var result = addTen(count);
alert(count) //20,没有变化
alert(result) //30
</code>
加入num是按引用传递的话,那么变量count的值也将变成30,从而反映函数内部的修改。
<code>
function setName(obj){
obj.name = "haha";
}
var person = new Object();
setName(person);
alert(person.name) ; //“哈哈” obj和person引用的是同一个对象
</code>
下面再看一个例子
<code>
function setName(obj){
obj.name = "haha";
obj = new Object;
obj.name="change";
}
var person =newe Object();
setName(person);
alert(person.name); //“哈哈”
</code>
因为函数内部重写obj,这个变量引用的就是一个局部变量了,而这个局部对象会在函数执行完毕后立即销毁。可以把ECMAScript函数的参数想象成局部变量。