Fork me on GitHub

引用和基本类型

 function set(obj){
   obj.name = "cj";
   obj = {};
   obj.name = "aa"  // 如果是按引用传递的话  结果会改成这个
  }
  var obj = {};
  set(obj);
  
  alert(obj.name);

结果是cj ,函数的参数是局部变量

JavaScript 函数传递参数时,是值传递。虽然您可能不信,因为ECMAScript 变量可能包含两种不同数据类型的值:基本数据类型,和引用数据类型。难道引用数据类型传递的时候难道也是值传递吗?答,没错。

 

当一个变量向另一个变量复制引用类型的值时,会将存储在栈中的值(栈中存放的值是对应堆中的引用地址)复制一份到为新变量分配的空间中。

不同的是,这个值的副本其实是一个指针,而这个指针指向存储在堆中的一个对象。复制操作结束后,两个变量实际上引用同一个对象。

 

s

posted on 2011-09-02 21:27  【艾伦】  阅读(429)  评论(1编辑  收藏  举报