为了账号安全,请及时绑定邮箱和手机立即绑定

js for循环问题

js for循环问题

PIPIONE 2019-03-15 18:15:39
var page_ary=[];   var obj={};  //var j=0;  for(var i=1;i<=3;i++){    obj.page=i;    obj.cla='';    //j=i;    console.log('i','---',i);    console.log('obj','---',obj);    page_ary[i-1]=obj;    console.log('page_ary','---',page_ary);  }     打印出来的page_ary{page: 3, cla: ""}{page: 3, cla: ""}{page: 3, cla: ""}如果把obj声明放在里面就可以了var page_ary=[];   //var j=0;  for(var i=1;i<=3;i++){    //放在这里    var obj={}    obj.page=i;    obj.cla='';    //j=i;    console.log('i','---',i);    console.log('obj','---',obj);    page_ary[i-1]=obj;    console.log('page_ary','---',page_ary);  }  打印结果就是这样{page: 1, cla: ""}{page: 2, cla: ""}{page: 3, cla: ""}谁能解释一下这是为什么??? 谢谢!!!
查看完整描述

3 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

for循环结束后,i=3;
obj在循环外(又是一个对象,会被引用。你不用对象就不会有问题)最后拿到的就都是i=3的时候的数据。
所以你需要把obj的声明放循环里面,每次循环结束后,obj这个对象都会被重新构造,不会出引用问题,赋值就OK了。

查看完整回答
反对 回复 2019-04-09
?
慕容708150

TA贡献1831条经验 获得超4个赞

对象是引用类型;


查看完整回答
反对 回复 2019-04-09
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

因为page_ary[0]=page_ary[1]=page_ary[2]=obj


查看完整回答
反对 回复 2019-04-09
  • 3 回答
  • 0 关注
  • 461 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信