美文网首页Web前端知识点
JavaScript的执行机制

JavaScript的执行机制

作者: 浪漫天下 | 来源:发表于2018-09-07 12:06 被阅读0次

一、重要理论

    1、JavaScript是单线程语言,所有任务都是同步执行的。但是可以通过同步的方法实现异步执行。

    2、Event loop(事件循环)是JS的执行机制,也是JS实现异步执行的一种方法。

    3、JS的执行和运行的区别

            JS可以在不同的环境中执行,比如浏览器、node等,但是不同的环境执行方式是不同的。

            但是不管在那种环境下JS运行是统一的,运行是指JS的解析引擎。

二、JS的执行机制

    1、同步任务、异步任务

    按照JS是单线程语言的特点,JS执行机制应该是所有的执行任务都要排队依次等待执行。但这样的速度肯定会很慢,这样就有了同步任务和异步任务之分

    如上图,当JS开始执行后,所有的同步任务进入主线程依次排队执行,异步任务则被送入Event Table中注册函数,当指定的事件完成后由被送入Event Queue中等待主线程执行栈的同步任务执行完后调取异步任务的函数执行。

        如上图代码,setTimeout是异步任务,console.log()是同步任务,所以先执行console.log(),setTimeout则被送入Event Table中等待定时3s后注册函数,再被送入Event Queue中进入主程序执行栈中执行。

2、宏任务、微任务

    macro-task(宏任务): 整体JS代码、setTimeout、setInterval

    micro-task(微任务):Promise、process.nextTick   

事件循环(Event loop)

    宏任务和微任务都有自己的Event Queue,各自进入自己的Event Queue中等待执行。上图是事件循环的整体示意图。当一段代码载入内存中开始执行后,整体代码作为第一个宏任务开始执行,如果有微任务的话送入对应的Event Queue中,宏任务执行完毕后再执行微任务,之后接着执行宏任务,就这样循环依次执行,称之为事件循环(JS的执行机制)。

    上面代码的输出依次为: 1、7、6、8、9、11、10、12、2、4、3、5

相关文章

  • Javascript执行机制(setTimeout/Promis

    遇到的一道关于javascript执行机制的面试题 Javascript执行机制(setTimeout/Promi...

  • 前端基础

    这一次,彻底弄懂 JavaScript 执行机制 本文的目的就是要保证你彻底弄懂javascript的执行机制,如...

  • JavaScript文章

    这一次,彻底弄懂 JavaScript 执行机制 本文的目的就是要保证你彻底弄懂javascript的执行机制,如...

  • 2020-02-16 javascript的执行机制

    javascript的执行机制 执行顺序探讨 关于javascript javascript是一门单线程语言,在最...

  • 10分钟理解JavaScript引擎的执行机制

    深入理解JavaScript引擎的执行机制

  • JavaScript 执行机制

    全局环境:JavaScript代码运行起来会首先进入该环境 函数环境:当函数被调用执行时,会进入当前函数中执行代码...

  • JavaScript 执行机制

    Reference 这一次,彻底弄懂 JavaScript 执行机制 Summery JavaScript 单线程...

  • JavaScript执行机制

    原文 博客原文 大纲 1、场景分析2、执行机制相关知识点3、以实例来说明JavaScript的执行机制4、相关概念...

  • JavaScript 执行机制

    五个线程 js引擎线程: 执行js代码GUI线程: 绘制用户界面http网络请求线程: 处理网络请求, 等请求返回...

  • javascript执行机制

    javascript是一门单线程语言,javascript版的"多线程"都是用单线程模拟出来的 既然js是单线程,...

网友评论

    本文标题:JavaScript的执行机制

    本文链接:https://www.haomeiwen.com/subject/vnxcgftx.html