关于javascript的setinterval异步问题

第一段代码

    var timer = null
    var a = [1,10,20,30]
    timer = setInterval(function()
    {
        

        for(var ll=0;ll<a.length;ll++)
        {
            a[ll] -= 1;
        }
        console.log(a)

    },3500);

运行结果为正常
图片描述

第二段代码

    var timer = null
    var a = [{
                index:1,
            },{
                index:10,
            },{
                index:20,
            },{
                index:30,
            },{
                index:40,
            }]
    timer = setInterval(function(){
        for(var ll=0;ll<a.length;ll++){
            a[ll].index -= 1;
        }
        console.log(a)
    },3500);

运行结果却和预期不一样
图片描述

请问为什么会这样??setInterval是异步执行的吗

阅读 3.6k
3 个回答

var timer = null

var a = [{
            index:1,
        },{
            index:10,
        },{
            index:20,
        },{
            index:30,
        },{
            index:40,
        }]
timer = setInterval(function(){
        for(var ll=0;ll<a.length;ll++){
            a[ll].index -= 1;
        }
        console.log( JSON.stringify( a ) )
},3500);

一楼是正确的,这段代码我在浏览器执行和直接 window cmd 运行的结果是不一样的,cmd 是预期结果,浏览器不是

推荐问题
宣传栏