如何利用setTimeout探究JavaScript的执行机制?

更新于
2026-10-02 10:14:58
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计631个文字,预计阅读时间需要3分钟。

前言:我们知道JS是一个单线程的语言,其运行机制比较特殊。

下面通过settimeout的几个示例来展示javascript运行机制的特殊点:示例1:console.log(1); setTimeout(function() { console.log(2); }, 0);

结果:1 2

前言

我们知道JS是一个单线程的语言,而且其运行机制比较特殊。

下面我们通过settimeout的几个示例来展现javascript的运行机制的特殊点

示例1

console.log(1); setTimeout(function(){ console.log(2); },0); console.log(3); // 打印出 1 3 2

示例2

console.log('1'); setTimeout(function(){ console.log('2'); },0); while(1){} // 打印出1,然后浏览器卡死,不会打印出2

javascript会先把需要运行的内容放到任务队列中

但是如果遇到settimeout,会认为这是个异步任务,会先放到异步队列中

浏览器会先执行同步任务,等到同步任务执行完之后,再查看异步队列

如果异步队列中的任务的执行时机到了,浏览器就会把任务放到同步队列中去。

即:

异步任务一定在同步任务之后执行。

阅读全文

本文共计631个文字,预计阅读时间需要3分钟。

前言:我们知道JS是一个单线程的语言,其运行机制比较特殊。

下面通过settimeout的几个示例来展示javascript运行机制的特殊点:示例1:console.log(1); setTimeout(function() { console.log(2); }, 0);

结果:1 2

前言

我们知道JS是一个单线程的语言,而且其运行机制比较特殊。

下面我们通过settimeout的几个示例来展现javascript的运行机制的特殊点

示例1

console.log(1); setTimeout(function(){ console.log(2); },0); console.log(3); // 打印出 1 3 2

示例2

console.log('1'); setTimeout(function(){ console.log('2'); },0); while(1){} // 打印出1,然后浏览器卡死,不会打印出2

javascript会先把需要运行的内容放到任务队列中

但是如果遇到settimeout,会认为这是个异步任务,会先放到异步队列中

浏览器会先执行同步任务,等到同步任务执行完之后,再查看异步队列

如果异步队列中的任务的执行时机到了,浏览器就会把任务放到同步队列中去。

即:

异步任务一定在同步任务之后执行。

阅读全文