您的位置:首页 > Web前端 > JavaScript

javascript高级程序设计(第3版) 读书笔记2 变量,作用域 内存问题

2012-07-10 12:50 459 查看
引用类型的值是保存在内存中的对象,不允许直接访问,操作对象实际上是在操作对象的引用而不是对象本身。

从一个变量a(假设里面存放字符串“dan”)向另外一个变量b复制基本类型的值:相当于复制一个副本(另外一个字符串“dan”)给b,变量a和b互相不影响。

从一个变量a(假设里面存放对象 object )向另外一个变量b复制引用类型的值:先要说明,a中存放的是object在堆内存中的地址,a可以理解为一个指针,指向object,复制完成后,b中存放的也是object在堆内存中的地址,现在a和b都指向object,b是a的一个副本。不管是操作a还是b,都会互相产生影响。

var a=new object();

var b=a;

a.name="dan";

alert(b.name); // "dan"

传递参数问题

javascript中,所有的参数都是按值传递的。

向参数传递基本类型的数据时,被传递的值会被复制给局部变量。

向参数传递引用类型的数据时,传递给局部变量的是对象在内存中的地址,因此局部变量可以直接修改到对象本身(会反应在函数外部)。

   function setname(obj)
   {
     obj.name="dan";

   };
   var person1=new Object();
   setname(person1); //setname()函数中的局部变量现在和person1一样,都指向内存中的object对象,操作函数的局部变量,就会修改到 object对象本身。

   alert(person1.name); //"dan"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐