码迷,mamicode.com
首页 > 其他好文 > 详细

【problem - 已解决】 函数变量初始化问题

时间:2016-09-07 22:25:44      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

 

1 function setName (obj) {
2     //obj.name = "xiao";
3     obj = {};
4     obj.name = "che";
5 }
6 var person = {};
7 setName(person);
8 console.log(person.name);

 

问题:第 2 行不注释时,输出 “xiao” ;第 2 行注释时,输出 undefined 。

 

 

问题的解决引用类型在作为参数传递是也是值传递,这时参数和原引用的对象都指向堆中的同一个对象,但是在函数内部,对参数变量重新定义时,便指向了另一个对象,所以再对他的属性赋值并不改变原引用的对象。

 

参考资料JavaScript 传递参数是值传递?还是值传递啊?

 

另外:函数执行相关逻辑之前,初始化变量的过程:

  1. 遍历参数列表
  2. 遍历函数声明
  3. 添加arguments并赋值【这里不同浏览器表现差异较大,并不一定都是这样】
  4. 遍历函数中所有的变量声明

 

 

【problem - 已解决】 函数变量初始化问题

标签:

原文地址:http://www.cnblogs.com/xiaochechang/p/5850973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!