首页 > javascript循环push 对象问题

javascript循环push 对象问题

新手入门问题 不知道自己理解的对不对,请帮忙指点一下,谢谢。
最近在做的一个项目,需要循环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的是名字相同的不同对象。不知道这种理解对不对。
刚开始我还以为是闭包问题,新手上路 多多指教。


一看就是新手。
var arr=[1,2,3,4,5,6,7];
var newarr=[];
var getarr= function () {

//每次循环都push一次as对象
for(i in arr){
    newarr.push({
        ss:i
    });
}
console.log(newarr)

};

这样写简洁


不是因为什么闭包,你先看一下什么是 基本类型 什么是 引用类型 ,大致就跟你说的一样。
第一段错误就是每次其实都是给同一个对象赋值,第二个是每次都新建一个对象并且赋值。

【热门文章】
【热门文章】