`
yejian235
  • 浏览: 22846 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

js变量赋值或者说克隆的理解

    博客分类:
  • js
 
阅读更多

var obj={};

var ref=obj;

obj.name='objectA';

obj=["one","two","three"];

alert(ref.name);//'objectA'

alert(ref.length);//underfined

1,修改添加name属性后,原obj指向的内存中添加name,obj和ref都能访问name属性;
2,obj被重新赋值后,指向了新的地址,而存储'objectA'的地值仍被ref引用;

var outter=[];

function clouseTest(){

var array=["one","two","three","four"];

for(var i=0;i<array.length;i++){

var x={};

x.no=i;

x.text=array[i];

x.invoke=function(){

alert(i);

}

outter.push(x);

}

}

//调用这个函数

clouseTest();

outter[0].invoke();//4

outter[3].invoke();//4

x的no和text是基本类型number克隆,而invode与外层函数有依赖关系,在被调用的时候,调用变量i,而i在调用clouseTest的时候已经自增为4了。所以不管哪一项调用invoke都是同一个值4
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics