安穩

文章 评论 浏览 27

安穩 2022-05-04 13:58:46

请教博主一个问题,烦请指教!当我反复查看html规范时候

An event loop has one or more task queues. A task queue is an ordered list of tasks, which are algorithms that are responsible for such work as:

  1. Events
    Dispatching an Event object at a particular EventTarget object is often done by a dedicated task.
    2.Parsing
    The HTML parser tokenizing one or more bytes, and then processing any resulting tokens, is typically a task.
    ....

规范里面说到event loop有多个task queues.一个task queue就是任务的列表,它们负责以下工作。
看里很久有两个疑惑,恳请解答
1.dispatching an event 不是浏览器有专门的线程监听各种事件吗?然后相应的event handler 会进入task queues.为什么规范里说:是任务队列Dispatching an Event。因为任务队列里的任务都会被JavaScript engines执行,也就是说是JavaScript engines在触发事件?
2.html解析不是通过渲染引擎来解析的吗,怎么这里又说是JavaScript engines解析?在一次event loop中,如果页面需要更新。这时候会停止JavaScript引擎,启动渲染引擎来更新页面吗?
谢谢了
@creeperyang

从 Promise 来看 JavaScript 中的 Event Loop、Tasks 和 Microtasks

安穩 2022-05-04 13:54:33

Number('1000000000').toLocaleString().replace(/,/g, '.')

第 143 题:将 10000000000 形式的字符串,以每 3 位进行分隔展示 10.000.000.000 多种实现方式

安穩 2022-05-04 13:51:26

@Flying-Eagle2

我们先看这段代码的结构,简化一下就是:

var p = (function _a(){

}(function _b(){

}()))

相当于先执行 _b 函数,然后将函数的执行结果作为参数传入 _a 函数

_b 函数为:

function (a, b) {
     return a;
 }

_b 函数执行

(function (a, b) {
     return a;
 }(1, 2))

函数返回 1,然后将 1 作为参数传入 _a,相当于:

function (a) {
       this.a = a;
       return function (b) {
            return this.a + b;
      }
}(1)

变量 p 的值就是一个函数为:

function (b) {
     return 1 + b
}

p(4) 的结果自然是 5

JavaScript 深入之执行上下文

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文