鍍金池/ 問答/Java  HTML/ 為什么這段代碼會輸出0呢?感覺setInterval()像被跳過了一樣,好疑惑。

為什么這段代碼會輸出0呢?感覺setInterval()像被跳過了一樣,好疑惑。求解

這段代碼執(zhí)行后,控制臺直接輸出0,沒有先執(zhí)行setInterval()中的匿名函數(shù)
代碼如下:

        var div = document.getElementById("div");
        div.onclick = function() {
            var i = 0;
            var timer = null;
            timer = setInterval(function() {
                i++;
                console.log(i)
                if(i == 10) {
                    clearInterval(timer);
                }
            },300);
            if(i == 0) {
                clearInterval(timer);
                console.log(i);
            }
        }

clipboard.png
不得解呀!求大神解惑

回答
編輯回答
陌離殤
2017年11月13日 18:21
編輯回答
陌南塵

為什么你會覺得settimeout里的代碼應該先執(zhí)行?

2018年2月8日 01:09
編輯回答
默念

你設定定時函數(shù)為300毫秒執(zhí)行,你感覺走你這一段會慢過300毫秒嗎?肯定是先輸出然后再等定時器觸發(fā)拉

2018年2月22日 12:49
編輯回答
不歸路

延遲操作會被加入到任務/異步隊列中,當主線走完才執(zhí)行。

2018年5月18日 11:12