JS 底层探究--上下文

开始接触前端的时候 都是从HTML/CSS/JS 三大基础来的。

HTML: 页面布局

CSS: 样式美化

JS: 实现动态交互

可以实现一些简单的页面和需求。

从来都是需要实现啥?然后搜怎么实现?最后拼凑出一段实现的代码。

但是其中的原理,为啥用这个属性就能达到效果,为啥这里要这么写,从来没有仔细的探究过。

这里我们就抛弃掉工作中的效率为王的准则。来对一些小点进行深挖探究。

一、上下文是啥?

执行上下文 = JavaScript 代码运行时的 "运行环境 + 数据仓库 + 规则手册"

每一个上下文,天生自带 3 个核心内容:

  1. 变量环境:存变量、函数、参数
  2. 作用域链:能访问哪些外部变量
  3. this 指向:this 是谁

二、上下文有哪几种

JS 只有 2 种上下文(必须记住)

1. 全局上下文(整个程序的 "大厅")

代码一运行就创建

只有 1 个

关闭页面才销毁

放全局变量、全局函数

2. 函数上下文(函数的 "小房间")

调用函数时才创建

函数执行完立刻销毁

每次调用 = 新建一个房间

放局部变量、参数

一段代码看懂上下文切换

javascript 复制代码
// 1. 进入 【全局上下文】
let a = 1;

function test() {
  // 2. 调用函数 → 进入 【函数上下文】
  let b = 2;
  console.log(a + b);
} // 3. 函数执行完 → 销毁函数上下文

test();
// 4. 回到 【全局上下文】

注意点:

1、全局上下文只有一个,而且JS加载中一直存在

2、函数上下文可以有多个,只有函数被调用才会创建,执行完成进行销毁。

相关推荐
大风起兮云飞扬丶1 小时前
Java——枚举
java·开发语言
小灰灰搞电子1 小时前
Rust+Slint 实现高级动态消息提示框源码分享
开发语言·rust
Dev _1 小时前
Python解释器安装在系统级目录导致命令行用户‌没有权限‌向该目录写入文件
开发语言·python
qq_406981032 小时前
大白话rust系列08 当变量遮蔽遇上引用,探究变量遮蔽的本质
开发语言·后端·rust
小poop2 小时前
从“雷峰塔”到“对象”:JavaScript基础语法入门指南
前端·javascript
喵了几个咪2 小时前
GoWind ShortPlay 拆解:不用模型的推荐闭环——埋点回流、三路召回与已看去重
开发语言·后端·微服务·golang·gowind
谙弆悕博士2 小时前
用 C 写了个 Windows 聊天室,踩了几个多线程和控制台的坑
c语言·开发语言·c++·windows·网络编程·聊天室
Canmag 兴隆磁性2 小时前
回复磁导率 μ_R:永磁体在动态磁路中的关键参数
开发语言·学习·r语言·永磁材料·充磁·磁导率
chunyublog2 小时前
HDFS 上传文件名空格问题排障教程
前端·javascript·npm
CRMEB系统商城2 小时前
鲜花零售的预售与积分营销
开发语言·人工智能·科技·小程序·零售