由于javascript是单线程工作的,在同一时间只能完成一件事情。所以在执行时分为同步执行和异步执行。

同步执行:

 console.log(1);
 alert(2);
 console.log(3);

首先执行console.log(1),输出1。然后执行alert(2),此时页面弹框,一直等待命令结束,不再执行后面的程序。

 

异步执行:

console.log(1);
setTimeout(function () {
    console.log(2)
},1000)
console.log(3)

同样先执行console.log(1),输出1。但是此时检测到setTimeout 需要等待,于是将该函数被放入等待事件,跳到下一行命令console.log(3),输出3。当所有不需要等待的命令执行完毕后,开始执行等待事件。等待事件根据所需时间输出。

如图:

同理,图片的加载也需要等待时间,所以异步执行。

<img src="./异步.PNG" alt="xxx" >
console.log(1);
var img = document.getElementsByTagName('img')[0];
img.onload = function() {
   console.log(2);
}
console.log(3);

 

 

练习:

  for (let i = 10; i > 0; i--) {
  setTimeout(function () {
  console.log(i)
  }, 2000)
  }
for (var i = 10; i > 0; i--) {
setTimeout(function () {
console.log(i)
}, 2000)
}

 

posted on 2019-06-24 18:40  四夕山月  阅读(124)  评论(0编辑  收藏  举报