js传递引用类型参数

function foo(obj) {
    obj.x=100;
}

var obj = new Object();
obj.x=1;
foo(obj);
console.log(obj.x); // obj.x被修改为100.

//===================================

function foo1(obj1){
    obj1 = {x:100};
}

var obj1 = {x:1};
foo1(obj1);
console.log(obj1.x);  //obj1.x为1

上面两段代码,为何结果不同?求解,谢谢......

阅读 1.8k
1 个回答

上面那个相当于这样:

var obj = new Object();
obj.x=1;

var foo_obj = obj;
foo_obj.x = 100;

下面那个则是这样:

var obj = new Object();
obj.x=1;

var foo_obj = obj;
foo_obj = {x: 1};

所有的对象在js中,都是引用类型变量。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题