​【JS重点知识04】JS执行机制(重点面试题)

news2024/7/2 3:41:58

 学前案例:

console.log(111);
setTimeout(function () {
   console.log(222);
}, 1000)
console.log(333);
//输出结果:1111 333 222
console.log(111);
setTimeout(function () {
   console.log(222);
}, 0)
console.log(333);
//输出结果:111 333 222

1 JS两种运行方式

同步

每条指令都会严格按照他们出现的顺序来执行,而每条指令执行后也能立即获得存储在系统本地(如寄存器或系统内存)的信息

异步

当前进程外部的实体可以触发代码执行

大白话,做一件事情的同时,可以去做别的事情;例如做饭异步,烧水的同时,可以利用间隙去切菜、炒菜

同步任务

同步任务都在主线程上执行,形成一个执行栈(主线程)

异步任务

异步任务存放位置

异步任务会经浏览器异步进程处理,最终添加到任务队列中(也称为消息队列)

异步任务常见

1 普通事件,如click、resize等

2 资源加载,如load、error等

3 定时器,包括setInterval、setTimeout等

4 ajax(网络模块)

2 JS执行机制(重要)

文字版流程

  1. 首先判断程序中的同步任务、以及异步任务;
  2. 同步任务会在执行栈中先执行
  3. 异步任务则会经浏览器处理后,放入任务队列中
  4. 当同步任务完全执行完后,执行栈会查询任务队列,取出任务队列中罗列好的异步任务来执行
  5. 重复第4步直到异步也完全执行完毕

事件循环(重要)

执行栈不断从任务队列中获取任务、执行任务、再获取任务、再执行的过程,称为事件循环(event loop)

图片版流程

3 练习题

console.log(111);
setTimeout(function () {
  console.log(222);
}, 1000)
console.log(333);
答案:111 333 222
console.log(111)以及console.log(333)两条指令属于同步任务,所以会在执行栈中先执行;
而延时函数属于异步任务,则会在任务队列中等待;当两个同步任务执行完毕后,才会执行延时
函数中的内容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798363.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

各行业万能预约门店小程序源码系统 支持多门店预约 前后端分离 带完整的安装源码包以及搭建教程

在移动互联网快速发展的今天,小程序以其轻量级、即用即走的特点,成为了企业连接用户、提供服务的重要桥梁。特别是在服务行业,如美容美发、餐饮、医疗、教育等领域,门店预约系统的重要性不言而喻。为了满足各行业对门店预约系统的…

C语言实现map数据结构 key—value对应

1.首先43行 createKeyValuePair(char*key ,int value)这个函数就是给一个keyValuePair *pair的指针来通过内存分配将数据key和value存入这个pair指针所对应的内存空间 2.52行freeKeyValuePair这个函数是释放内存空间 3.头文件 struct结构体KeyValuePair就是一个指针一个值 4…

node-mysql的批量插入

此前我批量插入都是用类似这样的命令: sqlcmdinsert into table(field1,field2,...) values ? indata[["f1v1","f2v1"],["f1v2","f2v2"],...] mysqlconn.query(sqlcmd,[indata],(err,res)>{...})但是感觉不太舒服&…

Puffer Finance 如何凭借“再质押”,化解以太坊节点运行难题?

去中心化、DeFi 增强、全链化等 LST 赛道竞争背景下的市场争夺热点频现,以太坊该如何化解节点中心化的现实困境?一起来看看 TinTin AMA 第 10 期活动看看原生流动性再质押平台 Puffer Finance 的技术解决方案,以再质押理念优化用户参与项目流…

银河麒麟V10_系统如何自定义添加桌面右键菜单选项

本篇博客取自《银河麒麟桌面操作系统软件适配常见问题指导手册》官网可以下载。 环境 系统版本 适用系统:V10(SP1)适用架构:X86、ARM、MIPS 其他版本和架构可做参考。 解决方案 使用下面的这个demo 编译就可以看到效果 peony…

基于jeecgboot-vue3的Flowable流程-已办任务(二)

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 接上一节,这个部分主要讲功能代码 1、注册列表数据显示 //注册table数据const { prefixCls, tableContext, onExportXls, onImportXls } useListPage({tableProps: {title: …

2559. 统计范围内的元音字符串数(前缀和) o(n)时间复杂度

给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。 每个查询 queries[i] [li, ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内(包含 这两个值)并且以元音开头和结尾的字符串的数目。 返回一个整数数组,其中…

【2024PythonPycharm详细安装教程】

1.打开官网 https://www.python.org/ downloads——>Windows 2.找到 Download Windows installer (64-bit) 下载 3.下载完成双击安装包 勾选Add python.exe to PATH(自动配置系统变量) 点击Install Now(默认安装) 然后看到安装成功&#xff0…

【权威出版/投稿优惠】2024年社会发展与公共文化国际会议(SDPC 2024)

2024 International Conference on Social Development and Public Culture 2024年社会发展与公共文化国际会议 【会议信息】 会议简称:SDPC 2024 截稿时间:点击查看 大会地点:中国上海 会议官网:www.icsdpc.com 会议邮箱&#x…

中山大学和字节发布「视频虚拟试穿」扩散模型VITON-DiT,一键生成换装后视频!

视频虚拟试穿技术日益受到关注,然而现有的工作局限于将服装图像转移到姿势和背景简单的视频上,对于随意拍摄的视频则效果不佳。最近,Sora 揭示了 Diffusion Transformer (DiT) 在生成具有真实场景的逼真视频方面的可扩展性,可以说…

任务悬赏APP搭建必备功能有哪些?

搭建一个任务悬赏APP,需要具备以下必备功能: 在线发布需求:允许用户或商家在线发布任务需求,如浏览广告等 在线接单功能:用户可以在线接单和抢单,以及接收任务完成提醒 推广功能:商户可以通过…

回收站找不到已删除的文件怎么办?别急,这里有解决方法

在数字化时代,电脑中的数据成为了我们生活和工作的重要部分。无论是珍贵的照片、重要的文档,还是日常的工作文件,我们都希望能够妥善保存。然而,误删除文件的情况时有发生,而当我们急切地打开回收站试图找回这些文件时…

JSON 无法序列化

JSON 无法序列化通常出现在尝试将某些类型的数据转换为 JSON 字符串时,这些数据类型可能包含不可序列化的内容。 JSON 序列化器通常无法处理特定类型的数据,例如日期时间对象、自定义类实例等。在将数据转换为 JSON 字符串之前,确保所有数据都…

Anaconda配置环境

查看存在的环境 conda list创建环境 #创建 名称为python38的python环境 conda create -n python38 python3.8 #激活 conda activate python38 #退出当前环境 conda deactivate安装python包 #安装numpy包 conda install numpy #安装指定版本 conda install numpy1.0.2 #安装指…

关机重启命令

1.shutdown命令 [rootlocalhost ~]#shutdown [选项] 时间 选项: -c:取消前一个关机命令 -h:关机 -r:重启 正确使用关机重启命令,因为服务器多个人使用的情况下,硬盘正在高速运行,当强制性关机…

数据恢复工具推荐:电脑回收站删除的文件怎么恢复?8个回收站恢复软件,收藏!

当文件从电脑的回收站被删除后,许多用户可能认为这些文件已永久丢失。然而,实际上,在数据被新数据覆盖之前,这些删除的文件仍然可以通过使用专门的数据恢复软件来恢复。本文将介绍8款顶级的文件恢复软件,恢复电脑回收站…

Mybatis-Plus被恶意CVE一事

前言 Mybatis-Plus框架在2024年5月被人在CVE网络安全漏洞库上提交了漏洞,该漏洞可笑无比,但是有趣的是竟然还是被CVE审核确认为了SQL注入漏洞; 发生了什么 见Mybatis-plus发出的申明公告:https://mp.weixin.qq.com/s?__bizMzA…

【UE5:CesiumForUnreal】——从地球全景聚焦到某区域的动画制作

目录 1.添加Render Texture并和SceneCapture2D关联 1.1 场景准备 1.2 添加Render Texture 1.3 添加SceneCapture2D并关联 2.在Widget上显示Render Texture 2.1 创建Widget 2.2 配置Widget 2.3 添加控制按钮 2.4 添加窗口逻辑 3.制作Sequencer动画 3.1 创建Sequencer…

欧美北美南美国外媒体投稿和东南亚中东亚洲媒体海外新闻发稿软文推广营销策略有哪些?

在当今全球化的浪潮中,中国品牌正积极拓展海外市场,寻求更广阔的发展空间。面对国际竞争,有效的海外媒体发稿营销策略对于品牌国际化至关重要。以下是一些关键点和建议,以帮助品牌在海外市场取得成功。 深入了解目标市场&#xf…

2024年最新Stable Diffusion本地化部署详细攻略,手把手教程(建议收藏!!)_stable diffusion 本地部署

今天有网友问到SD本地部署的攻略,我找到以前收集的资料发出来分享给大家,希望对大家有帮助! Stable Diffusion本地化部署详细攻略 一、硬件要求 内存:至少16GB 硬盘:至少60GB以上的磁盘空间,推荐SSD固态…