JavaScript 既有同步执行模式,也有异步执行模式,它们的主要区别体现在代码执行顺序和处理耗时操作的方式上:

1. 同步(Synchronous)

  • 执行方式:代码按照书写顺序依次执行,前一行代码执行完成后,才会执行下一行。
  • 特点
  • 阻塞性:如果某行代码执行时间长(如复杂计算),会阻塞后续代码运行。
  • 顺序执行:代码执行顺序与书写顺序一致,易于理解。
  • 示例


javascript

console.log("开始");
let sum = 0;
for (let i = 0; i < 1000000000; i++) {sum += i; // 耗时操作,会阻塞后续代码
}
console.log("计算结果:", sum);
console.log("结束"); // 必须等待上面的循环完成后才会执行

2. 异步(Asynchronous)

  • 执行方式:代码不按照书写顺序执行,耗时操作会被放入 "任务队列",主线程继续执行后续代码,待耗时操作完成后再回头执行回调函数。
  • 特点
  • 非阻塞性:耗时操作(如网络请求、定时器)不会阻塞主线程。
  • 无序性:异步操作的结果返回时间不确定,需要通过回调函数、Promise 等方式处理。
  • 示例


javascript

console.log("开始");
setTimeout(() => {console.log("定时器执行"); // 异步操作,放入任务队列
}, 1000);
console.log("结束"); // 无需等待定时器,会先执行

输出顺序:开始 → 结束 → 定时器执行

核心区别总结

特性

同步

异步

执行顺序

按代码顺序依次执行

不按顺序,依赖操作完成时间

阻塞性

会阻塞后续代码

不会阻塞,非阻塞执行

适用场景

简单计算、立即执行的操作

网络请求、文件 IO、定时器等耗时操作

处理方式

直接执行

通过回调、Promise、async/await 处理结果


JavaScript 中异步操作非常常见,比如 API 调用、事件监听、setTimeout 等,它们确保了主线程不会被耗时操作阻塞,从而保证了页面的响应性。