Rider123 2015-01-13 06:54 采纳率: 0%
浏览 1554

javascript值传递和引用传递的问题

我看了一篇文章,讲了值传递和引用传递的过程,但是页面最后给出的例子却没有看懂,

 function setName(obj){ 
obj.name = "test1"; 
obj = {}; 
obj.name = "test2"; 
} 
var person = new Object(); 
setName(person); 
alert(person.name); 

该段代码中方法里进行了 obj={ } ,obj.name = "test2"; 这两步操作,

为什么person.name的值还是test1呢?

就算是引用传递,那这也已经改了指向的地址了啊,为什么还会是test1呢?

求大牛们给解释一下,不胜感激

  • 写回答

5条回答 默认 最新

  • danielinbiti 2015-01-13 07:26
    关注

    obj = {}; //已经重新定义覆盖了
    对于传参即使按引用传递对象,如果直接在函数中用新值覆盖原先的值,那跟传递进去的对象没关系的。只有改变对象属性,对参数的对象才有影响。
    如果学过C,你可以这么理解
    内存有一个Person,参数就是执行这个person的指针。如果通过指针.属性,那么肯定也改变了person的属性。但如果对指针重新定义了一个地址,那和原来的person一点关系都没有

    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试