javaScript/js知识梳理与面试题

一. 执行上下文

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

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

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

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

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

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

相关推荐
浅念-8 小时前
C++11 核心知识点整理
开发语言·数据结构·c++·笔记·算法
panzer_maus8 小时前
Java多线程介绍
java·开发语言
清空mega8 小时前
《Vue3 模板进阶:class/style 绑定、事件对象、修饰符、表单处理与高频易错点》
前端·javascript·vue.js
还是大剑师兰特8 小时前
Vue3 插槽完整实战(具名插槽 + 动态插槽)
前端·javascript·vue.js
echome8888 小时前
Python 装饰器详解:从入门到实战的完整指南
开发语言·python
fei_sun8 小时前
Vue+SpingBoot+MyBaits框架
前端·javascript·vue.js
AMoon丶8 小时前
Golang--多种控制结构详解
java·linux·c语言·开发语言·后端·青少年编程·golang
爱吃鱼的锅包肉8 小时前
利用css+js实现一个图片随鼠标滑动裁剪的功能
前端·javascript·css·计算机外设
儒雅的烤地瓜8 小时前
小程序 | Vue小程序开发框架:MPvue与UniApp深度解析
前端·vue.js·uni-app·nodejs·cli·mpvue
小鸡脚来咯8 小时前
正则表达式考点
java·开发语言·前端