javaScript/js知识梳理与面试题

一. 执行上下文

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

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

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

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

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

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

相关推荐
L-李俊漩20 小时前
手机端的google chrome 浏览器 怎么看响应的日志和请求报文
前端·chrome·智能手机
明月_清风20 小时前
HTML 早已不是标签了,它现在是系统级接口:这 9 个 API 直接干翻常用 JS 库
前端·html
MR_Promethus20 小时前
【C++11】volatile 关键字
开发语言·c++·volatile
岱宗夫up20 小时前
【前端基础】HTML + CSS + JavaScript 快速入门
前端·css·html
明月_清风20 小时前
告别后端转换:前端实现 Word & PDF 高性能预览实战
前端
skywalk816320 小时前
electrobun 使用TypeScript构建超快速、小巧且跨平台的桌面应用程序(待续)
前端·javascript·typescript
吴声子夜歌21 小时前
小程序——生命周期函数和事件处理函数
服务器·前端·小程序
薛一半1 天前
React的数据绑定
前端·javascript·react.js
爱看书的小沐1 天前
【小沐杂货铺】基于Three.js渲染三维无人机Drone(WebGL / vue / react )
javascript·vue.js·react.js·无人机·webgl·three.js·drone
天若有情6731 天前
从 try-catch 回调到链式调用:一种更优雅的 async/await 错误处理方案
前端·异常处理·前端开发·async·异步·await·异步编程