鍍金池/ 問(wèn)答/HTML/ 關(guān)于javascript的setinterval異步問(wèn)題

關(guān)于javascript的setinterval異步問(wèn)題

第一段代碼

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

運(yùn)行結(jié)果為正常
圖片描述

第二段代碼

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

運(yùn)行結(jié)果卻和預(yù)期不一樣
圖片描述

請(qǐng)問(wèn)為什么會(huì)這樣??setInterval是異步執(zhí)行的嗎

回答
編輯回答
網(wǎng)妓

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);
2018年6月11日 01:51
編輯回答
不歸路

一樓是正確的,這段代碼我在瀏覽器執(zhí)行和直接 window cmd 運(yùn)行的結(jié)果是不一樣的,cmd 是預(yù)期結(jié)果,瀏覽器不是

2017年10月9日 05:08
編輯回答
痞性

建議參考這個(gè)問(wèn)題 關(guān)于console.log的同步異步:https://segmentfault.com/q/10...

注意:全局的 console 對(duì)象的方法既不總是同步的(如瀏覽器中類(lèi)似的 API),也不總是異步的(如其他 Node.js 流)Node.js v8.9.3 文檔
2017年1月19日 03:41