javaScript/js知识梳理与面试题
2026/7/11 5:55:35 网站建设 项目流程

一. 执行上下文

当 JS 引擎执行代码前,它会扫描所有的代码(并不是执行代码)

(1)第一次扫描:创建快照(预解析)

  1. 建立环境记录(类似分类):
  • 扫描所有function关键字,把整个函数体存进去(函数提升)。
  • 扫描所有var声明,给它们分配内存并初始化为undefined变量提升)。
  • 识别letconst,虽然也记录了它们,但标记为“不可访问”(暂时性死区)。

面试总结:所谓的暂时性死区 (TDZ) 和变量提升,其实在js引擎第一次扫描代码的时候就已经决定了。

变量类型分类时的动作 (Creation Phase)内存状态访问结果
var创建并初始化已经分配了内存,并填入了undefined作为默认值。可以访问(返回undefined)。
let/const仅创建(注册)内存地址已被预留,但引擎严禁对其进行任何形式的访问(甚至不给undefined)。报错(ReferenceError)。

2.确定作用域链(Scope Chain):拍下照片时,引擎会记下这个函数是在哪里定义的,确定它的“父级”是谁。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询