JavaScript执行机制有什么

JavaScript执行机制有:1、同步任务(synchronous);2、异步任务(asynchronous)。同步任务指的是:在主线程上排队执行的任务,只有前一个任务执行完毕才能执行后一个任务。所有的同步任务都在主线程上执行,形成了一个执行栈。执行栈的执行顺序是后进先出。

一、JavaScript

JavaScript语言最大的特点就是单线程,即同一时间只能做一件事情,做完一件事情之后才能去做另一件事情。

例如,大家在银行排队取钱,一个窗口工作人员一次只能为一个客户服务,不能同一时间为多个顾客服务,负责就乱套了。JavaScript的单线程与它的用途有密切的关系。作为浏览器脚本语言,JavaScript的主要用途是与用户之间进行交互,以及操作DOM。这决定了它只能是单线程,否则就会带来复杂的同步问题。比如,假定JavaScript同时有两个线程,一个线程在某个DOM上添加节点,另一个线程删除节点,这时候浏览器以哪个线程为准来进行工作呢?

所以,为了避免同步的复杂性,从一诞生JavaScript就是单线程,这已经成为了这门语言的核心特征。为了利用多核CPU的计算能力,HTML5提出了Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程的控制,并且不可以操作DOM。所以一切JavaScript版的“多线程”都是通过单线程模拟出来的,这个新标准并没有改变JavaScript单线程的本质。

二、JavaScript的事件循环机制

单线程就意味着所有任务需要排队,前一个任务结束才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等待。我们在浏览页面网站的时候,有一些图片是要通过数据请求之后才能加载显示的,那么我们整个页面是不是要等某一个比较大的图片加载完成之后整个网站才能显示出来呢?这样做显然是不行的,所以JavaScript语言的设计者意识到了这一点,于是将所有的任务分成了两种:

同步任务(synchronous):

同步任务指的是:在主线程上排队执行的任务,只有前一个任务执行完毕才能执行后一个任务。所有的同步任务都在主线程上执行,形成了一个执行栈。执行栈的执行顺序是后进先出。

异步任务(asynchronous):

异步任务指的是:不进入主线程,而是进入“任务队列”的任务。只有“任务队列”通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行。

事件循环过程:

同步任务和异步任务分别进行不同的场所,同步任务进入主线程,异步任务进入事件表(Event Table)并且注册函数。

当指定的事情完成之后(例如接受到了Promise对象的返回结果resolve/reject),事件表(Event Table)会将这个函数移入到任务队列(Event Queue)。

主线程内的任务执行完毕之后,回去任务队列(Event Queue)读取对应的函数,移入到主线程执行。
上述过程不断重复,这就是事件循环(Event Loop)

来源:https://blog.csdn.net/m0_47584501/article/details/127219972

延伸阅读

JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

文章标题:JavaScript执行机制有什么,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/51619

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年5月8日
下一篇 2023年5月9日

相关推荐

  • 如何做两个项目的社群管理

    社群管理是一项讲究策略和技巧的工作,特别是在同时管理两个项目时。要成功进行两个项目的社群管理,关键是时间管理、明确区分两个社群的目标和策略、建立高效沟通渠道、利用自动化工具以及持续监测和分析。在这里,我们将主要展开讨论关于建立高效沟通渠道的重要性。 建立高效沟通渠道对于管理两个社群至关重要。这意味着…

    2024年4月11日
    5100
  • 办公oa系统那个最好

    办公OA系统选型重点注意事项包括:功能全面性、用户操作便捷性、系统安全性、技术支持与服务、成本效益比较。各组织的需求不同,因此最佳OA系统取决于具体需求的匹配度。比如,对于中小企业,推崇性价比高、操作简便的系统;大型企业则更注重系统的可扩展性与定制服务。 一、功能全面性 功能全面是选取OA系统的首要…

    2024年1月17日
    27100
  • switch语句中,小括号内的量为什么必须是整型

    原因有:1. 整型可以进行比较运算;2. 整型可以进行位运算;3. 整型占用空间较小;4. 整型可以进行强制类型转换。在switch语句中,需要将expression的值与不同的constant进行比较,以确定要执行哪个代码块。因此,expression必须是一种可以进行比较运算的数据类型。 1. …

    2023年2月28日
    49800
  • 图解什么是编程语言

    编程语言:定义与功能 编程语言是计算机技术领域内一种用来与计算机进行交流的工具,它有助于程序员编写指令,这些指令随后被转化为计算机能够理解并执行的机器语言。1、它们的主要功能包括简化技术实现、缩短开发周期、增加程序的可读性和可维护性。2、编程语言可以分为低级语言和高级语言,其中高级语言 如Pytho…

    2024年4月26日
    2700
  • app编程是什么

    APP编程是指创建应用程序(Application)的过程,涉及1、设计、2、编码、3、测试和4、维护等步骤。 其中,编码是核心环节,涉及到实际写代码来实现应用的功能。这通常需要掌握至少一门编程语言,如Java、Swift或Kotlin,以及相关开发工具和框架。构建一个优秀的APP还需要了解用户界面…

    2024年5月1日
    800
  • 三维编程用什么语言编程

    三维编程常用的编程语言包括1、C++,2、Python,3、JavaScript。 其中,C++ 由于其高性能特性,在三维编程领域尤其受到重视。这种语言具备强大的系统级控制能力和灵活的内存管理机制,使得开发者能够构建复杂的三维渲染引擎和游戏引擎。C++ 不仅提供了底层硬件的紧密控制,而且通过其丰富的…

    2024年5月1日
    1300
  • 云原生架构设计的关键原则是什么

    对于云原生架构设计的关键原则,1、去中心化治理、2、自动化运维、3、微服务架构、4、容器化、5、弹性伸缩、6、可观测性是其核心。去中心化治理意味着打破传统架构中大型、单体应用的设计模式,采用分布式系统的思想,使各个服务组件能够独立地开发、部署和扩展。 云原生架构设计关键原则中,自动化运维是其中之一,…

    2023年12月28日
    24200
  • nlp是什么编程

    NLP是一种通过计算机技术处理和模拟人类语言的方法,它是人工智能和语言学领域的一部分。NLP的目的是使计算机能够理解、解释和生成人类语言,包括口语和书面文字,以便实现人与计算机之间自然的互动。在此过程中,NLP结合了多个学科的方法和技术,如计算机科学、语言学和数据科学。这一领域不仅关注语言的结构,还…

    2024年5月2日
    900
  • 编程中什么是程序框架形式

    程序框架形式指的是预设的软件结构,它为特定类型的软件开发提供了必须的资源和标准化模块,从而简化编程过程并增强代码质量。 在框架中,开发人员可以利用一系列优化和经过测试的代码库和组件,确保应用程序坚固、可扩展且易于维护。例如,在Web开发中,一个流行的框架可能会包括对数据库操作、会话管理和模板渲染的支…

    2024年4月27日
    3300
  • 自动化编程的优点是什么

    自动化编程的优点包括提高生产效率、减少错误、节省成本、提升质量控制、强化安全性、优化资源分配、加速上市时间。在这些优点中,提高生产效率尤为显著。通过自动化编程,可以快速完成重复性高的任务,减少手动编写代码的需求,从而使得开发者能够将精力集中在更具创造性和战略意义的工作上。自动化工具可以无间断地运行,…

    2024年4月27日
    3900

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部