setTimeout通常用于延迟功能的执行,作为:

复制代码代码如下所示:

setTimeout(){()函数(

…

},超时);



有时,异步处理,使用的setTimeout(功能…0);例如:

复制代码代码如下所示:

函数f(){

……准备好

setTimeout(){()函数(

某事/做某事。

},0);



返回…;

}



函数f返回之前的setTimeout函数处理器;

使用异步处理时要特别小心,尤其是在使用闭包时。

例如:

复制代码代码如下所示:

对于(var i = 0;i < 10;i + +){

setTimeout(){()函数(

console.log(我);

},0);

}

对于首次使用这种方式的学生,很可能认为程序将打印0…9,结果打印10 10;

问题是,当循环结束,执行函数时,我已经变成了10,和console.log(我)使用10!



加入你的目的是打印0…9,然后你可以改变一种方法来节省0的功能参数.. 9(实际上,它也使用闭包):

复制代码代码如下所示:

对于(var i = 0;i < 10;i + +){

setTimeout((功能(我){)

返回函数(){

console.log(我);

}

}(一),0);

}