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

按值传递和按引用传递

时间:2014-08-18 21:54:42      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:java   io   ar   cti   div   代码   javascript   new   

ECMAScipt中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。

在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(形参,arguments对象中的一个元素)。而传递引用类型的值,会把这个值在内存的地址复制给一个局部变量,因此当局部变量的变化会反映在函数的外部。

Javascript代码 :

  function addTen(num){  

     num+=10;  

   return num;  

  }  

      var count=10;  

  var result=addTen(count);  

  aelrt(count);  //20,没有变化

  aelrt(result);  //30

 

Javascript代码:

  function setName(obj){  

     obj.name="Nicholas";  

  }  

  var person=new Object();  

  setName(person);  

  alert(person.name);   //Nicholas

 以上代码中创建一个对象,并将其保存在变量person中,然后这个对象被传递到setName()函数中被复制给了obj。

 在这个函数内部,obj和person引用的是同一个对象。

如果是person是按引用传递的,那么person就会自动修改为指向其name属性为"Gred"的新对象。但是,当接下来再访问person.name时,显示的值仍然是"Nicholas"。

Javascript代码:

  function setName(obj){  

     obj.name="Nicholas";  

            obj=new Object();  

            obj.name="Greg";  

  }  

  var person=new Object();  

  setName(person);  

  alert(person.name);   //Greg(摘自javascript高级程序设计)

如果这是按值传递,那么下面代码又为什么说是按引用传递?求高手解答

var obj1=new Object();  

var obj2=obj1;

obj1.name="Nicholas";

alert(obj2.name);  //Nicholas

obj1=new Object();

obj1.name="Greg";

alert(obj2.name);  //Nicholas

按值传递和按引用传递,布布扣,bubuko.com

按值传递和按引用传递

标签:java   io   ar   cti   div   代码   javascript   new   

原文地址:http://www.cnblogs.com/xjinza/p/3920457.html

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