setTimeout()函数在使用时,系统并不会停留在这个函数这里等待延时,而是先执行后边的语句,等时间到了再执行setTimeout指定的函数或者语句。
这在通过公共变量交换数据时,要特别注意。代码如下:
let i=1
console.log("初始i值:" +i )
setTimeout(() => {
i=i+1
console.log("延时内i,这一句其实最后执行了:" + i)
}, 500)
console.log("延时后i应该为2,但是这一句先执行了:" +i )
以上语句中,若i为公共变量,别的函数也用到了,可能会导致数值错乱,要特别注意。
执行栈 宏任务 微任务理解一下