首页 > 其他分享 >​【JS重点知识04】JS执行机制(重点面试题)

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

时间:2024-06-09 10:01:41浏览次数:20  
标签:异步 面试题 console log 04 333 JS 任务 执行

 学前案例:

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)两条指令属于同步任务,所以会在执行栈中先执行;
而延时函数属于异步任务,则会在任务队列中等待;当两个同步任务执行完毕后,才会执行延时
函数中的内容

标签:异步,面试题,console,log,04,333,JS,任务,执行
From: https://blog.csdn.net/qq_67896626/article/details/139528038

相关文章

  • js中-null不是基本类型
    在JavaScript中,`null`也不是基本类型(也称作原始类型或简单数据类型),但它被归类为一种特殊的对象类型。这是一个历史遗留问题,也是JavaScript语言设计上的一些独特之处。在早期版本的ECMAScript规范中,typeof操作符对`null`返回`"object"`,这导致很多人误以为`null`是一种对......
  • 代码随想录第4天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 0
    题目:24.两两交换链表中的节点思路:设置虚拟头结点,双指针+临时指针,(感觉也能递归,未尝试)时间复杂度:O(n)空间复杂度:O(1)坑:1.又忘了else{}和return2.试图访问空指针,多个条件的顺序问题及"&&""||"问题,cur->next要写在cur->next->next前面/***Definitionforsingly-linked......
  • 0004python金融量化初入门
    >Date:2024.04.24>Keywords:在量化投资(证券和比特币)开源项目里,全球star数排名前10位里面,有7个是Python实现的。从数据获取到策略回测再到交易,覆盖了整个业务链。而全球注册用户数最多的商业量化平台Uqer优矿,也同样是基于Python实现和提供服务的。国内后来的其他量化平台,例如ricequ......
  • 第二章:Three.js 环境搭建
    第二章:环境搭建本章将详细介绍如何搭建Three.js的开发环境,包括安装Node.js和npm,配置Three.js项目,以及在HTML中引入Three.js。2.1安装Node.js和npmNode.js是一个开源的、跨平台的JavaScript运行时环境。npm是Node.js的包管理工具,用于安装和管理JavaS......
  • 第一章:Three.js 简介
    1.1什么是Three.jsThree.js是一个开源的JavaScript库,用于在Web浏览器中创建和显示动画3D计算机图形。它建立在WebGL之上,简化了复杂的3D渲染过程,使开发者能够轻松创建丰富的3D图形和交互效果。Three.js的特点包括:高效的3D渲染:Three.js使用WebGL提供......
  • uniapp 中renderjs的使用
    1.cs.vue<template><viewclass="demo"><!--text是renderjsmodule名称--> <view>{{data}}</view><button@click="text.onClick2"> 按钮2 </button> ......
  • 704. Binary Search
    Givenanarrayofintegersnumswhichissortedinascendingorder,andanintegertarget,writeafunctiontosearchtargetinnums.Iftargetexists,thenreturnitsindex.Otherwise,return-1.YoumustwriteanalgorithmwithO(logn)runtimecomplexi......
  • 代码随想录算法训练营第四天 Leetcode 24 两两交换链表节点 Leetcode19 删除链表倒数
    链表问题首先要记住设置虚拟头节点Leetcode24两两交换链表节点题目链接思路:就是简单模拟两两交换 要注意链表节点的处理一定要获取到合适的位置比如:这一题中两个交换节点的前一个节点注意链表保存临时节点/***Definitionforsingly-linkedlist.*publicclas......
  • html+CSS+js部分基础运用13
    一、三级联动效果如下图所示:图1三级联动二、设计江苏福彩投注站彩票投注助手编程实现江苏福彩投注站彩票投注助手,页面布局效果如图2所示。图2福彩投注站彩票助手页面功能要求如下:单击“机选1注”、“机选5注”或“机选10注”按钮时,能够随机产生相应条数的数据。......
  • (NICE!!!)LeetCode 3040. 相同分数的最大操作数目 II(深度优先搜索dfs+状态记忆化)
    3040.相同分数的最大操作数目II思路:记忆化搜索。一共最多三种target,我们三次记忆化搜索即可。细节看注释classSolution{public:intn;vector<vector<int>>v;//对区间l~r进行操作,返回符合target的最大操作次数intdfs(intl,intr,inttarget,......