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

  • 引用类型的值是保存在内存中的对象,不允许直接访问,操作对象实际上是在操作对象的引用而不是对象本身。
  • 从一个变量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"               

 

 

转载于:https://www.cnblogs.com/dan1983/archive/2012/07/10/2584430.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值