手写防抖与节流函数深度解析
防抖在事件停止后才执行一次,节流按固定间隔最多执行一次,二者都用闭包保存定时器或时间戳实现。 面试不仅考基础版,更看 this 绑定、立即执行、取消等边界处理。
防抖在事件停止后才执行一次,节流按固定间隔最多执行一次,二者都用闭包保存定时器或时间戳实现。 面试不仅考基础版,更看 this 绑定、立即执行、取消等边界处理。
Hooks 每次渲染都是全新函数调用,闭包捕获的是当前渲染的状态快照而非最新值。 空依赖让闭包冻结在初值是典型坑,解法为函数式更新、正确声明依赖、useRef 穿透。
闭包的核心价值不止'访问外部变量',更在于保存私有状态——防抖存定时器、模块存私有数据、柯里化存参数、记忆化存缓存。 面试能用真实场景说明'函数带着数据跑',比背定义更加分。
JavaScript 有全局、函数、块级三种作用域,变量查找沿作用域链由内向外逐级搜索。 面试重点在 var/let/const 的作用域差异、暂时性死区,以及作用域链如何支撑闭包与 this 判定。
闭包 = 函数 + 它能访问的外部变量,核心是函数创建时保存对词法环境的引用。 面试常考定义、形成条件(函数嵌套 + 引用外部变量)以及变量为何不被 GC 回收,讲清词法作用域与引用关系即可过关。