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"
从一个变量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"
相关文章推荐
- 学习 javascript高级程序设计 (第3版)-- 变量、作用域、内存问题
- javascript高级程序设计第四章:变量、作用域和内存问题读书笔记
- 读书笔记 - js高级程序设计 - 第四章 变量 作用域 和 内存问题
- javascript高级程序设计(变量、作用域和内存问题)
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
- JavaScript高级程序设计学习笔记--变量、作用域和内存问题
- javascript高级程序设计第三版 第四章 变量、作用域和内存问题
- Javascript高级程序设计第二版第四章--变量,作用域及内存问题--笔记
- javascript高级程序设计第四章 变量、作用域和内存问题
- Javascript高级程序设计第二版第四章--变量,作用域及内存问题--笔记
- JavaScript高级程序设计第4章(变量、作用域的问题)自己的理解
- JavaScript高级程序设计学习总结二(JavaScript复杂的变量与内存问题)
- JavaScript高级程序设计——第4章:变量、作用域和内存问题
- JavaScript高级程序设计-(3) 变量、作用域和内存问题
- JavaScript高级程序设计笔记-变量、作用域和内存问题
- JavaScript高级程序设计之变量、作用域和内存问题之执行环境及作用域第4.2讲敏敏笔记
- javascript高级程序设计笔记(第4章 变量、作用域和内存问题)
- JavaScript高级程序设计2--变量、作用域和内存问题
- Javascript高级程序设计第二版第四章--变量,作用域及内存问题--笔记
- JavaScript高级程序设计——第4章 变量、作用域和内存问题