JavaScript运行机制( 二 )


关于定时器的重要补充:
定时器包括setTimeout与 setInterval 两个方法 。它们的第二个参数是指定其回调函数推迟/每隔多少毫秒数后执行 。
对于第二个参数有以下需要注意的地方:
当第二个参数缺省时,默认为 0;
当指定的值小于 4 毫秒,则增加到 4ms(4ms 是 html5 标准指定的,对于 2010 年及之前的浏览器则是 10ms);也就是说至少需要4毫秒,该setTimeout()拿到任务队列中 。
例题2$.ajax({url:“xxxxx",success:function (result){console.log("a") }})setTimeout(function (){console.log("b")},100)setTimeout(function (){console.log("c")})console.log("d"); 

JavaScript运行机制

文章插图
 
ajax加载完成时才会放入异步队列,至于这段时间不确定,所有有两种情况:①大于100ms,最后的结果是 d c b a ;②小于100ms,最后的结果便是d c a b 。
六、题外话如果要输出0~4,上面例题应该如何修改?
  1. 将var变为let
for (let i = 0; i < 5; i++) {setTimeout(function() {console.log(i); }, 1000);}2.加个立即执行函数
for (var i = 0; i < 5; i++) {(function(i){setTimeout(function() {console.log(i); }, 1000);})(i)}3.也可以通过这样加闭包
for(var i = 1;i < 5;i++){var a = function(){var j = i;setTimeout(function(){console.log(j);},1000)} a();}
【JavaScript运行机制】


推荐阅读