同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的(会阻塞代码),只有接收到返回的值或消息后才往下执行其他的命令。 优点:按照顺序一个一个来,不会乱掉,更不会出现上面代码没有执行完就执行下面的代码, 缺点:是解析的速度没有异步的快;
var num = 10
function fun() {
num = 20
}
function fn() {
console.log(num);//10
}
fn()
fun()
console.log(num);//20
异步,异步任务是指不进入主线程,而进入任务队列的任务,只有任务队列通知主线程,某个异步任务可以执行了,该任务才会进入主线程,当我们打开网站时,像图片的加载,音乐的加载,其实就是一个异步任务。优点:不会阻塞代码
console.log(1);
setTimeout(() => {
console.log(2);
}, 1000);
console.log(3);
setTimeout(() => {
console.log(4);
}, 0);
console.log(5);
//执行结果为
1
3
5
4
2
应用场景:网络请求,ajax、setTimeout、setInterval