在javascript中输出以下代码的原因是什么?

时间:2016-10-21 07:55:14

标签: javascript scope

for (var a=0; a<5; a++)
{
    setTimeout(function(){
        alert(a);
    }, 0);
}

javascript中的上述代码提示我输出5,5次实际上我的期望输出类似于0,1,2,3,4,但它显示了5,5,5的输出,5,5。为什么会这样?

除此之外,请在javascript中向我解释上下文和范围的概念,我总是通过从网上阅读的许多例子来理解它。

1 个答案:

答案 0 :(得分:1)

setTimeout()内,您的alert()被异步调用,因此for循环很可能在alert()执行之前完成。