鍍金池/ 問(wèn)答/數(shù)據(jù)分析&挖掘  HTML/ js for循環(huán)問(wèn)題

js for循環(huán)問(wèn)題

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);
  }     

打印出來(lái)的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);
  }  

打印結(jié)果就是這樣

{page: 1, cla: ""}

{page: 2, cla: ""}

{page: 3, cla: ""}

誰(shuí)能解釋一下這是為什么??? 謝謝?。?!

回答
編輯回答
拼未來(lái)

for循環(huán)結(jié)束后,i=3;
obj在循環(huán)外(又是一個(gè)對(duì)象,會(huì)被引用。你不用對(duì)象就不會(huì)有問(wèn)題)最后拿到的就都是i=3的時(shí)候的數(shù)據(jù)。
所以你需要把obj的聲明放循環(huán)里面,每次循環(huán)結(jié)束后,obj這個(gè)對(duì)象都會(huì)被重新構(gòu)造,不會(huì)出引用問(wèn)題,賦值就OK了。

2018年2月6日 06:02
編輯回答
入她眼

因?yàn)?code>page_ary[0]=page_ary[1]=page_ary[2]=obj

2017年1月25日 17:25
編輯回答
吢丕

對(duì)象是引用類(lèi)型;

2017年7月20日 14:53