您的位置:首页 > Web前端 > JavaScript

关于js函数的参数传递问题

2016-12-05 11:33 441 查看
先来看例1

var a =1;
function myFunc(b){
b = 2;
console.log(b);
}
myFunc(a);
console.log(a);


会依次打印出

2

1

再看例2

var a =1;
function myFunc(a){
a = 2;
console.log(a);
}
myFunc(a);
console.log(a);


依然会打印出

2

1

再看例3

var o ={a:1}
function myFunc(o){
o.a=2;
console.log(o.a);
}
myFunc(o);
console.log(o.a);
会打印出

2

2

上面的例子说明,在js中调用一个函数时,其实是声明了一个新的变量,并让其等于传递的参数。在第三个例子中,由于o是一个object(引用类型),所以在函数中修改o.a时,外面的o.a也被修改了。函数中的o并不是外面的o,而是o的一个引用。例3也就等价于下面的操作

var o = {a:1};
var o2 = o;
o2.a=2;
console.log(o2.a);
console.log(o.a);

结果也是
2

2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript 函数