在ECMAScript中,所有的函数的参数都是按值传递的,也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。
例子1:向参数传递基本类型的值时
function addTen(num){
num+=1;
return num;
}
var count=20;
var result=addTen(count);
console.log(count); //20 无变化
console.log(resullt); //30
原因是,函数内的局部变量不会影响函数外的count变量。
例子2:向参数传递引用数据类型的值时
function setName(){
obj.name="Nice";
obj=new Object();
obj.name="Geet";
}
var person=new Object();
setName(person);
console.log(person.name); //"Nice"
原因是,函数内部重写obj时,这个变量引用的就是一个局部对象,而这个局部对象会在函数执行完毕后立即销毁。