关于javascript的setinterval异步问题

淅淅沥沥
  • 157

第一段代码

    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是异步执行的吗

回复
阅读 1.9k
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 是预期结果,浏览器不是

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏