A

A2

B

C(采用闭包)

i*3000,i值为多少?(1?),为什么时间依旧是3000,没有和i值一齐计算?包括采用闭包后(C),依旧是每隔3000ms弹出。i*3000和3000,console弹出的区别,这个区别在C闭包上也有体现。为什么会造成这样区别?之前看到JS的队列执行结构,知道setTimeout这类函数是须等其他代码执行完毕后才开始执行,且存在多个setTimeout的话,按照时间设置长短,分配优先级(设置时间短的在前)。这里实在不知道为什么会有这样的区别,对它还是摸不透- -
for (var i=1;i<6;i++) {
!function (num) {
setTimeout( function timer() {
console.log(num);
}, num*3000 );
}(i)
}
console,去掉num*则一齐弹出。相乘运算难道没执行?
慕妹3242003
慕斯王
随时随地看视频慕课网APP
相关分类