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日

相关推荐

  • 具备项目和日程管理的工具有哪些

    具备项目和日程管理的工具有:1、Worktile;2、PingCode;3、Redmine;4、Omniplan;5、Podio;6、Freedcamp;7、Teamweek;8、Gantt Project。Worktile是一款在国内拥有50万企业用户的项目软件,是国内使用较为广泛的项目管理系统。…

    2023年4月14日
    18100
  • websocket与ajax的区别是什么

    websocket与ajax的区别是什么:1、本质不同;2、生命周期不同;3、适用范围不同;4、发起人不同。其中,本质不同是指,Ajax,即异步JavaScript和XML,是一种创建交互式网页应用的网页开发技术。 一、本质不同 Ajax,即异步JavaScript和XML,是一种创建交互式网页应用…

    2023年5月16日
    18200
  • 金蝶k3有看板系统吗

    金蝶k3有看板系统,金蝶K3看板系统的功能:1、数据分析;2、多样化展示;3、实时更新和自动化生成报表。数据分析是指,K3看板系统可以将企业的关键业务数据实时展示在看板上,并通过看板系统进行数据分析。 一、金蝶K3看板系统 金蝶K3有看板系统。K3看板系统的功能: 1、数据分析:K3看板系统可以将企…

    2023年4月8日
    15000
  • 如何团队协同开发

    团队协同开发要做到:一、建立明确的目标和规划;二、组建合适的团队;三、分配任务和责任;四、建立有效的沟通机制;五、使用版本控制;六、遵循最佳实践;七、定期进行代码审查;八、建立文化和价值观;九、持续学习和改进。 一、建立明确的目标和规划 在团队协同开发之前,必须确立明确的目标和规划。包括确定项目的范…

    2023年3月22日
    22000
  • 单链表双链表单循环链表双循环链表有什么区别

    单链表双链表单循环链表双循环链表的区别有:1、链接方式不同;2、遍历方式不同;3、应用场景不同。链接方式不同是指单链表和单循环链表每个节点只有一个指针指向下一个节点,而双链表和双循环链表还有从后一个节点指向前一个节点的指针。 一、单链表双链表单循环链表双循环链表有什么区别 1、链接方式不同 单链表:…

    2023年4月2日
    83000
  • 工单管理的目的是什么

    工单管理的目的主要有:1、提高生产力;2、提高质量;3、更好的问责制。工单管理是记录、跟踪和处理客户问题的完成情况,客户服务收到客户问题后,将许多无法根据在线交流解决的问题转发给相关部门的服务人员,服务人员将解决问题并反馈给客户服务人员。 1、提高生产力 确切地知道他们必须做什么、何时到期以及如何去…

    2022年11月6日
    93700
  • 项目时间管理有哪几个过程

    项目时间管理的过程有:一、活动定义;二、活动排序;三、活动资源估算;四、活动历时估算;五、制定进度计划;六、进度控制。活动定义把工作包进一步分解为活动,主要方法有分解模板和专家判断等,主要输出是项目活动清单。 一、活动定义 把工作包进一步分解为活动,主要方法有分解模板和专家判断等,主要输出是项目活动…

    2023年4月30日
    16100
  • cpu的基本时间单位是什么

    cpu的基本时间单位是线程。线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 一、线程简介 cpu的基本时间单位是线程。线程(thread)是操作系…

    2023年1月9日
    48300
  • 数据仪表盘怎么做

    数据仪表盘的做法:1、准备数据;2、插入数据;3、设置图形格式;4、新建辅助数据表格;5、做出箭头图;6、添加数据制作仪表盘。准备数据要求,数据由四部分组成:刻度值、指针值、表盘内圈值、表盘外圈颜色值。 一、做数据仪表盘的步骤 1、准备数据:图表仪表盘制作的要领是一个饼图两个圆环图。数据由四部分组成…

    2023年2月28日
    48700
  • 乐观锁为什么适用于冲突少的场景,以及应用在内存数据库中

    乐观锁适用于冲突少的场景的主要原因是:在并发量不大、修改操作不频繁的情况下,冲突的概率较小,可以有效地提高系统的并发性能。而在冲突多的情况下,乐观锁的重试次数会增加,系统的开销也会随之增加,降低了系统的并发性能,因此不适用于冲突多的场景。 乐观锁是一种基于冲突检测的锁技术,它的基本思想是:每次对数据…

    2023年5月31日
    2900

发表回复

登录后才能评论
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部