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

What's the reason for the below code output in javascript

本文关键字:输出 是什么 代码 javascript      更新时间:2023-09-26
for (var a=0; a<5; a++)
{
    setTimeout(function(){
        alert(a);
    }, 0);
}

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

除此之外,请给我解释一下javascript中上下文和作用域的概念,我总是不能理解它,通过许多从网络上阅读的例子。

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