新手入门问题 不知道自己理解的对不对,请帮忙指点一下,谢谢。
最近在做的一个项目,需要循环push 一个对象,大致如下代码
var arr=[1,2,3,4,5,6,7];
var newarr=[];
var getarr= function () {
//每次循环都push一次as对象
var as={
ss:""
};
for(i in arr){
as.ss=arr[i];
newarr.push(as);
}
console.log(newarr)
};
var btns=document.getElementById('Go');
btns.addEventListener('click',getarr)
这种最后结果输出的都是最后一次循环的值,
这是调整过后的
var arr=[1,2,3,4,5,6,7];
var newarr=[];
var getarr= function () {
for(i in arr){
var as={
ss:""
};
as.ss=arr[i];
newarr.push(as);
}
console.log(newarr)
};
var btns=document.getElementById('Go');
btns.addEventListener('click',getarr)
我的理解是 都是push 对象,但第一种声明在前,也就是说每次赋值,然后push是同一个对象,
第二种是 每次循环push的是名字相同的不同对象。不知道这种理解对不对。
刚开始我还以为是闭包问题,新手上路 多多指教。
不是因为什么闭包,你先看一下什么是 基本类型 什么是 引用类型 ,大致就跟你说的一样。
第一段错误就是每次其实都是给同一个对象赋值,第二个是每次都新建一个对象并且赋值。