004-执行上下文&事件循环

执行上下文&事件循环

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

1、执行上下文

2、执行上下文类型

  1. 全局执行上下文

  2. 函数执行上下文

  3. Eval 函数执行上下文

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

  1. 创建阶段

  2. 执行阶段

  3. 回收阶段

4、示例说明

javascript 复制代码
// 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、同步任务、宏任务、微任务

javascript 复制代码
// 同步任务
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、代码执行顺序 - 示例

javascript 复制代码
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
相关推荐
skilllite作者2 小时前
Warp 新手极速上手与部署指南
java·前端·笔记·安全·agentskills
吹个口哨写代码2 小时前
小程序图片不显示,直接访问显示,头部配置问题
javascript·css·nginx
遇见~未来2 小时前
第一篇_认识CSS_风格的起点
前端·css
遇见~未来2 小时前
第二篇_CSS核心_盒子_布局_视觉
前端·css
林恒smileZAZ2 小时前
宇宙画布:纯 CSS+JS 实现交互式深空艺术
前端·javascript·css
IT_陈寒2 小时前
Java的finally块居然没执行?这是个巨坑
前端·人工智能·后端
好运的阿财2 小时前
OpenClaw工具拆解之sandboxed_write+sandboxed_edit
前端·ai·ai编程·openclaw·openclaw工具
遇见~未来2 小时前
第四篇_强化视觉_字体_动画_变换
前端·css3
开开心心_Every2 小时前
图片转PDF合并工具,支持扫描仪输入
运维·前端·人工智能·随机森林·edge·pdf·逻辑回归
垦利不2 小时前
TS基础篇
开发语言·前端·typescript