new.target 在函数中表示什么?箭头函数中如何影响?
围绕“new.target 在函数中表示什么?箭头函数中如何影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释它是构造函数是否为 new 的标志,在箭头函数中继承外层。
程序员面试题库第 47 页,收录第 2301–2350 题,共 5000 道完整解析,覆盖前端、JavaScript、React、Vue、Node.js、AI Agent、网络、数据库与系统设计。
按稳定语义路径排序
围绕“new.target 在函数中表示什么?箭头函数中如何影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释它是构造函数是否为 new 的标志,在箭头函数中继承外层。
围绕“对象方法简写(method shorthand)与属性值为普通函数有何区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释简写方法使用 function 关键字,但不绑定自己的 arguments 或 super?严格来说简写方法不可作为构造函数,且。
围绕“可选链(?.) 如何用于函数调用?它对 this 绑定有何影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明如果调用不存在不会报错,且 this 绑定保持原引用。
围绕“如何利用闭包实现 JavaScript 的私有变量?有哪些模式”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需展示通过在函数内定义变量并返回暴露接口的方式。
对比剩余参数与 arguments 的核心差异:真数组 Vs 类数组、收集范围、同步机制、默认参数关系,并指出工程中的选择依据。
围绕“函数调用中副作用指什么?纯函数有什么特点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需明确副作用定义与纯函数可预测性。
围绕“函数默认参数与块级作用域中的暂时性死区有什么关系”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明默认参数有自己的作用域,未初始化前访问外层同名变量可能导致 TDZ 错误。
本文解析 this 四种绑定规则及优先级,强调调用点决定 this,不扩展到箭头函数。内容含作用域机制、典型场景、边界条件,并提供判断方法。
围绕“在 class 中的方法 this 绑定与普通对象方法有何不同?为何通常要 bind”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明类方法默认不绑定,析构时 this 丢失,以及通过构造函数绑定或箭头字段初始化。
解释 addEventListener 回调中 this 的指向规则:普通函数 this 为 currentTarget 元素,箭头函数继承外层 this,并提供判断方法和适用场景。
围绕“var、let 和 const 在函数作用域与块级作用域上有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需比较函数作用域与块级作用域、变量提升与暂时性死区,直接与词法绑定相关。
围绕“yield* 表达式用于什么?如何在生成器中委托给另一个可迭代对象”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明委托迭代,最终值由 return 传递。
手写递归数组扁平化,实现flatten(arr)任意深度拍平。文章解析Array.isArray判断与递归拼接机制,给出可运行代码和稀疏数组、空数组边界测试,指出调用栈限制,帮助理解Array.prototype.flat的基础原理。
题目考察深拷贝循环链的打断手段。回答给出以 WeakMap 保存源对象与副本关系的核心思路,并提供解决自引用、互相引用和嵌套数据结构的可运行代码、输出,以及 WeakMap 与 Map 的取舍。
本文详解手写深拷贝的基础实现,通过 typeof 与 Array.isArray 判断哪些值需要创建新容器并递归,普通对象和数组逐层复制,其余值直接返回。给出三个边界测试输入并分析时间复杂度。
围绕“为什么 top-level await 会阻塞其父模块的解析?是否有方式避免”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确“避免方式”为改用动态加载或重新设计模块依赖。
围绕“ESM 中循环依赖的处理机制是怎样的?为什么不会像 CommonJS 那样出现部分 undefined”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释基于实时绑定和模块实例化的调度,与 CommonJS 的执行时赋值的对比。
围绕“在循环依赖的模块中,如果一方导出的是函数声明,另一方导入后能否安全调用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明实时绑定下,函数提升使得模块链接时找不到但执行时可用的机制。
围绕“循环依赖中如果一方导出 let 绑定,另一模块在初始化顶层读取它,会发生什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 let 的暂时性死区可能引起 ReferenceError,与 var 或函数的差异;不涵盖异步模块。
围绕“为什么浏览器中的 ESM 必须使用 CORS 获取模块?同源策略如何适用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明模块脚本受 CORS 限制,普通脚本不受。
围绕“同一模块中能否导出两个同名的变量或函数?如果尝试会怎样”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明语法错误的发生,与默认导出可混用的情况。
围绕“动态 import() 返回什么?为什么它是异步的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 import() 的 Promise 语义和异步加载缘由,区别于静态导入的静态分析。
围绕“动态 import() 是否允许使用模板字符串或变量作为参数?它如何处理变量路径”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明规范允许任意表达式,但实际路径解析可能受限。
围绕“什么时候使用动态 import() 而不是静态 import?请给出具体场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖重点给出按需加载、条件加载、非模块脚本等场景。
围绕“在浏览器中,如何使用 <script type="module"> 指定入口来加载模块图?有哪些注意点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕涉及 async/defer、CORS、MIME 等,不包含模块预加载。
阐述两种导出的语法、导入名称和数量差异,并通过校验工具接口案例说明默认导出的适用条件,最后指出默认导出声明方式及混合导出时的常见误解与重命名成本。
本题解释 ESM 导出变量为实时绑定、CommonJS 导出为值拷贝或对象引用的机制差异,通过代码示例说明实时绑定如何让导入值随源模块变化,并指出在哪些边界下即使 ESM 也可能呈现非实时行为(导出对象的属性修改)。
本题辨析 const 和 let 导出的区别,明确实时绑定对两者等价,差异在导出模块内部的可赋值性,并给出导入端只读的边界。说明对象属性修改仍可见,数字等原始值则必须依赖 let 重绑定。
围绕“export default 一个表达式(如立即执行函数)与先声明再导出在提升和实时绑定上有什么差异”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明默认导出不绑定名称,与具名导出的提升特性不同。
围绕“在 ESM 的导入模块中,给导入的变量重新赋值会出现什么错误?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖重点说明导入绑定是只读的,且赋值会导致 TypeError。
围绕“export { a, b } 与 export const a = ... 同时出现时,如何避免命名冲突”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释导出列表是引用局部绑定,因此不能重复。
解释import * as ns与具名导入在实时绑定和Tree-shaking上的差异:虽都实时绑定,但namespace对象阻碍静态分析,实际打包中具名导入更利于按需删除无用导出。
本文解析 ESM 中 import 声明是否被提升,解释模块链接阶段先于执行导致绑定提前创建。跟 var 提升区分,明确绑定创建与值初始化的差异,并给出代码放置顺序和实时绑定的实际影响。
围绕“如何在 ESM 中导入 JSON 文件?导入断言属性起什么作用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖重点说明 import 断言语法和用途。
围绕“<script type="importmap"> 的作用是什么?它如何改变模块说明符的解析”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕Explain mapping bare specifiers to URLs; 不涉及动态 import 的解析。
围绕“import.meta.resolve 的作用是什么?它和 import 语句有什么关系”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释其作为解析路径的用途,与动态 import 不同;不探讨浏览器兼容性细节。
围绕“import.meta.url 在不同环境(浏览器 vs Node.js)下提供什么信息”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 import.meta 对象及 url 的用途。
围绕“如果多个模块导入同一个模块,该模块会执行几次?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖解释模块缓存的实例化与求值一次,不针对条件加载的 import() 可能重复执行。
围绕“模块 namespace 对象是冻结的吗?可以修改其属性吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 namespace 对象是密封且属性只读,但导出对象的内容可变。
讲解 ESM 中 import { x as y } 重命名导入的语法细节,说明别名与原名共享同一条只读实时绑定,导出方重新赋值后导入方可读到新值,并给出实际场景与失效边界。
围绕“导入一个对象或数组时,导出方修改该对象的属性,导入方是否能看到?为什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖区分对象内部可变性与绑定本身,说明是共享引用。
围绕“为什么浏览器不支持裸模块说明符,而 Node.js 支持?如何适配”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答可用 import maps 或打包器;不深入 Each map 入口细节。
围绕“Node.js 中如何区分一个 .js 文件是 CommonJS 还是 ESM?package.json 的 typ”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕涉及 type 字段与文件扩展名 .mjs/.cjs。
围绕“Node.js 中 package.json 的 exports 字段如何控制模块的解析?它如何支持条件导出”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕Focus on condition order and subpaths; 不扩展到各条件的完整写法。
围绕“使用 <script nomodule> 构建使用旧脚本的降级环境时,需要注意什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明只针对不支持 module 的浏览器执行。
本题解释纯副作用导入 import './module' 的语义:它触发模块代码执行但无导入绑定,常用于 polyfill、全局配置等场景,并讨论其与动态导入和重复导入的关系。
围绕“在 ESM 中,如何使用 export ... from 进行再导出,以及是否存在具名与默认再导出的区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 export { x } from 与 export * from 的用法和差异。
围绕“浏览器中 <script type="module"> 与普通脚本的主要差异有哪些”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕强调作用域、延迟加载、严格模式、CORS 等。
围绕“什么是 import source 阶段?source-phase imports 与普通 import 有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖面向较新的 ESM 特性,说明 import source 与 import defer 的基本意;不深入提案历史。
围绕“为什么 ES6 模块的代码默认是严格模式?这对模块内函数有什么影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明模块顶层与模块内函数自动严格模式,并列举常见差异。