基于你提供的《JS 面试高频问题(2026重新分析面经版)》题单重新整理。
目标不是把答案压缩成关键词,而是按“为什么 → 是什么 → 怎么运行 → 代码示例 → 面试怎么说 → 常见误区/追问”的方式,把每道题整理成可以系统学习、也可以直接用于面试表达的教程。
说明:少数面试资料里常见的“栈存基本类型、堆存引用类型”“渲染就是宏任务”等说法属于简化模型。本文会保留面试所需的直观理解,同时标注更准确的边界,避免背出明显不严谨的结论。
如何使用这份资料
2026/9/4大约 85 分钟
基于你提供的《JS 面试高频问题(2026重新分析面经版)》题单重新整理。
目标不是把答案压缩成关键词,而是按“为什么 → 是什么 → 怎么运行 → 代码示例 → 面试怎么说 → 常见误区/追问”的方式,把每道题整理成可以系统学习、也可以直接用于面试表达的教程。
说明:少数面试资料里常见的“栈存基本类型、堆存引用类型”“渲染就是宏任务”等说法属于简化模型。本文会保留面试所需的直观理解,同时标注更准确的边界,避免背出明显不严谨的结论。
renderWithHooks,然后可以说第二个问题的内容。
分为三个阶段:
阶段一:在调用函数前准备环境,把当前正在渲染的 fiber 赋予给全局变量 currentlyRenderingFiber = workInProgress,让后续 hook 知道自己属于哪个组件,读取 current 树上已有的 hook 链表头;判断当前是 mount 还是 update(首次渲染还是更新渲染)来切换 dispatcher。