如下代码输出的顺序是?javascript
console.log(1); setTimeout(function(){ console.log(2); }, 0); setTimeout(function(){ console.log(3); }, 1000);
console.log(4);
答案是:java
1 4 2 3
常常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来经过查资料以及实验得出如下两个做用,可能还有做用我还不知道,但愿得知的朋友在后面评论上不吝指出。
一、实现javascript的异步;
正常状况下javascript都是按照顺序执行的。可是咱们可能让该语句后面的语句执行完再执行自己,这时就能够用到setTimeout延时0ms来实现了。
如:
alert(1);
setTimeout("alert(2)", 0);
alert(3);
虽然延时了0ms,可是执行顺序为:1,3,2
这样就保证setTimeout里面的语句在某一代码段中最后执行。 异步