004-执行上下文事件循环

执行上下文&事件循环

  • 1、执行上下文
  • 2、执行上下文类型
  • 3、执行上下文的生命周期
  • 4、示例说明
  • 5、事件循环机制
  • 6、宏任务
  • 7、微任务
  • 8、同步任务、宏任务、微任务
  • 9、代码执行顺序 - 示例

💡 Tips:用于说明 浏览器 对 JavaScript 执行顺序,涉及知识点包含:this指向、变量声明提升、宏任务、微任务等

1、执行上下文

在这里插入图片描述

2、执行上下文类型

1. 全局执行上下文
在这里插入图片描述

2. 函数执行上下文

3. Eval 函数执行上下文

3、执行上下文的生命周期

1. 创建阶段
在这里插入图片描述

2. 执行阶段

3. 回收阶段

4、示例说明

// console.log(a); // Uncaught ReferenceError: a is not defined

// 变量声明提升
console.log(b); // undefined
var b = 123;
console.log(b); // 123

// 函数声明提升
console.log(fn1); // fn1() {}
function fn1() {
  console.log(this);
}

// 全局执行上下文
console.log(this); // Window

// 函数执行上下文 - this指向调用方
fn1(); // Window
const obj1 = { name: 'zhangsan' };
fn1.apply(obj1);  // {name: 'zhangsan'}

5、事件循环机制

在这里插入图片描述

6、宏任务

在这里插入图片描述

7、微任务

在这里插入图片描述

8、同步任务、宏任务、微任务

// 同步任务
var a = 123;
var b = 'zhangsan';
console.log(a);

// 异步任务 - 宏任务&微任务
// 宏任务
setTimeout(() => {
  console.log('setTimeout');
});

// 微任务
new Promise((resolve, reject) => {
  console.log('promise');
  resolve('promise');
}).then(res => {
  console.log('res-', res);
});

9、代码执行顺序 - 示例

var a = 123;

setTimeout(() => {
  console.log('setTimeout');
});
console.log(a);

new Promise((resolve, reject) => {
  console.log('promise');
  resolve('promise');
}).then(res => {
  console.log('res-', res);
});

// 先执行同步任务
// 第6行的打印:123
// 第9行的打印:promise

// 执行微任务
// 第12行的打印:res- promise

// 执行宏任务
// 第4行的打印:setTimeout

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity UGUI之Scrollbar基本了解

Unity的Scrollbar组件是用于在UI中创建滚动条的组件之一。滚动条通常与其他可滚动的UI元素(如滚动视图或列表)一起使用,以便用户可以在内容超出可见区域时滚动内容。 以下是Scrollbar的基本信息和用法: 1、创建 在Unity的Hierarchy视图中右…

Debian篇——系统安装在SD卡上如何调整系统分区大小

背景:我的SD卡是128G的,开发商安装好系统后,我发现SD的系统分区才8.9G空间(剩下的108G未分区),不够使用,于是需要调整系统分区的大小。 1.查看系统盘挂载情况 df -h 2.查看系统盘在哪个分区 …

解决java: 无法访问javax.servlet.ServletException

问题 在对历往项目工具类总结和归纳更新过程中,common模块在compile编译过程中遇到了“Error java: 无法访问javax.servlet.ServletException 找不到javax.servlet.ServletException的类文件”这个报错问题。 IDE使用的是idea2021。 解决方法 pom中增加如下依赖&…

十七、IO流

IO 目录 一、IO流的概述IO流的分类 二、基本流2.1字节流2.2 字节输出流写出数据的三种方式2.3 换行和续写2.4 字节输入流2.5 文件拷贝2.6 IO流中不同JDK版本捕获异常的方式2.7 字符集详解2.7.1 ASCII字符集2.7.2 GBK字符集2.7.3 Unicode字符集 2.8 为什么会有乱码2.9 Java中的编…

python之海龟绘图

海龟绘图(turtle)是一个Python内置的绘图库,也被称为“Turtle Graphics”或简称“Turtles”。它采用了一种有趣的绘图方式,模拟一只小海龟在屏幕上爬行,而小海龟爬行的路径就形成了绘制的图形。这种绘图方式最初源自20…

某资产管理系统打点过程中的免杀经历

上周,被扔过来单位内部的一个链接,让渗透一下,本以为三下五除二很快就能测完,没想到在对抗杀软时费了一番功夫,再加上杂七杂八的事儿,经过了一个星期才测完(# ̄~&#xff…

API(接口) | 软件组件之间信息交互的“桥梁”

Hi,大家好,我是半亩花海。本文主要从 API 的定义、包含、用途和其他方面来简单地介绍 API(接口) ——软件组件之间信息交互的“桥梁”。 目录 一、什么是 API? 二、 API 中所包含哪些? 补充 三、API 可…

SQL server内存问题排查方案

前言 由于昨晚线上服务器数据库突然访问数据缓慢,任务管理里面SQL server进程爆满等等,重大事故的排查拟写解决方案。 整体思路 查询数据库请求连接:排查连接池是否占满查询数据库请求量:排查数据是否存在反复查询查询数据库阻…

Mysql 学习(十五)redo 日志

redo 日志 什么是redo日志?在说这个之前我们先来想一个场景,在访问磁盘的页面之前,我们会先把页面缓存到Buffer Pool之后,才会访问。写页面的时候也会先将buffer pool中的页面修改之后,然后在某个时机才会刷新到磁盘中…

【Oracle Database】如何远程连接服务器、创建用户、从本地dmp导入表

C:\Users\test>imp test/123456ip/orcl:1521 fileE:\db.dmp tablestable1,table2Import: Release 11.2.0.3.0 - Production on 星期一 3月 4 12:59:09 2024Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.IMP-00058: 遇到 ORACLE 错误 1263…

vue3 vue-i18n 多语言

1. 安装 npm install vue-i18n -s 2. 引入main.js import { createI18n } from vue-i18n import messages from ./i18n/index const i18n createI18n({legacy: false,locale: Cookies.get(language) || en_us, // set localefallbackLocale: en_us, // set fallback local…

Spring面向切片编程AOP概念及相关术语(一)

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…

面试问答之Spring进阶

文章目录 🐒个人主页:信计2102罗铠威🏅JavaEE系列专栏📖前言:🎀说说你对Spring的认识与理解🐕Bean的分类🐕 BeanFactory 接口和ApplicationContex 接口 的区别🐕SpringBe…

Canvas笔记04:绘制九大基本图形的方法,重头戏是贝塞尔曲线

hello,我是贝格前端工场,最近在学习canvas,分享一些canvas的一些知识点笔记,本期分享canvas绘制图形的知识,欢迎老铁们一同学习,欢迎关注,如有前端项目可以私信贝格。 Canvas是HTML5中的一个绘…

ROS2学习(七) Foxy版本ros2替换中间件。

在ros2使用的过程中,一开始选用的foxy版本,后来发现,foxy版本的ros2有很多问题。一个是foxy版本已经停止维护了。另一个问题是这个版本有很多bug, 后续的版本在功能实现上做了很大的改动,甚至说进行了重写。修复的一些问题&#x…

【Flink网络传输】ShuffleMaster与ShuffleEnvironment创建细节与提供的能力

文章目录 一. Taskmanager之间传递数据细节二. ShuffleService的设计与实现三. 在JobMaster中创建ShuffleMaster四. 在TaskManager中创建ShuffleEnvironment五. 基于ShuffleEnvironment创建ResultPartition1. 在task启动时创建ResultPartition2. ResultPartition的创建与对数据…

WSL2安装+深度学习环境配置

WSL2安装深度学习环境配置 1 安装WSL22 配置深度学习环境1.1 设置用户名、密码1.2 安装cuda修改WSL安装路径 1.3 安装Anaconda 参考:搭建Windows Linux子系统(WSL2)CUDA环境 参考:深度学习环境配置 WindowsWSL2 1 安装WSL2 WSL …

java-springboot 源码 01

01.springboot 是一个启动器 先安装maven&#xff0c;按照网上的流程来。主要是安装完成后&#xff0c;要修改conf目录下的setting.xml文件。 添加&#xff1a;阿里云镜像 <mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>ali…

判断连续数据同意特征的方法:插旗法

bool isMonotonic(int* nums, int numsSize) {int flag 2;for (int i 1; i < numsSize; i) {if (nums[i-1] > nums[i]) {if (flag 0)return false;flag 1;}else if (nums[i-1] < nums[i]) {if (flag 1)return false;flag 0;}}return true; }此代码较为简单&…

【Python】新手入门(8):什么是迭代?迭代的作用是什么?

【Python】新手入门&#xff08;8&#xff09;&#xff1a;什么是迭代&#xff1f;迭代有什么应用&#xff1f; &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】…