首页 > 编程语言 > 详细

javascript-变量的作用域

时间:2014-11-15 15:24:49      阅读:188      评论:0      收藏:0      [点我收藏+]

变量的赋值 如果从一个变量上向另一个变量上复制__基本数据类型__的值,会在变量对象上创建一个新值,然后把该值复制到新变量的位置上,这个很好理解,来看下例子:

var num1 = 5; var num2 = num1;

这是基本数据类型,而引用类型呢?其实同样会将原来变量上的值复制一份到新的变量当中,只不过,复制的其实是原来变量的一个指针,而这个指针指向存储在堆中的一个对象。复制完成后,两个变量都指向了堆中的同一个对象,所以改变其中一个的值,会对另外一个产生影响。有以下代码 

 var obj1 = new Object();

 var obj2 = obj1;  

obj1.name = "Nicholas";  

alert(obj2.name);  //"Nicholas"

传递参数 在javascript里面,参数的传递都是按照`值类型来传递`的,即使你传入的是一个引用类型

function setName(obj) {       

  obj.name = "Nicholas";

var person = new Object();

setName(person);

alert(person.name); //"Nicholas"

上面代码的返回结果貌似参数是引用类型的传递,因为开始person对象没有属性,调用了setName方法之后,给参数obj加上了name参数,然后外面的person打印person.name竟然是有值的,这是很明显的引用传递的效果。但是不要被这种现象所迷惑,javascript在传递引用类型的参数的时候,只要这个参数不发生改变,那么还是按照引用类型来处理,但是只有发生了改变效果就完全不一样了 

function setName(obj) {      

    obj.name = "Nicholas";    

    obj = new Object();       

    obj.name = "Greg";

}

     var person = new Object();

  setName(person);

  alert(person.name);    //"Nicholas"

 

javascript-变量的作用域

原文:http://www.cnblogs.com/yan940623/p/4099296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!