跳到正文
前端知识库
前端三大件

JavaScript 高频追问 Q&A

A: 每轮宏任务后会清空微任务队列再进入下一轮。(深入阅读:事件循环 Event Loop、宏任务和微任务)

3 分钟

JavaScript 高频追问 Q&A

1. Q: 事件循环里微任务和宏任务顺序?

A: 每轮宏任务后会清空微任务队列再进入下一轮。(深入阅读:事件循环 Event Loop宏任务和微任务

2. Q: 闭包的核心价值?

A: 保留函数创建时作用域,实现状态封装。(深入阅读:闭包的原理与使用场景

3. Q: 原型链查找规则?

A: 先查对象本身,再沿 [[Prototype]] 向上查找。(深入阅读:JavaScript 原型链

4. Q: 深拷贝常见坑?

A: 循环引用、函数/原型/特殊对象类型处理。(深入阅读:深拷贝与浅拷贝

5. Q: 防抖和节流差异?

A: 防抖“只要最后一次”,节流“固定间隔执行”。(深入阅读:防抖和节流的原理与场景

6. Q: == 为什么容易答错?

A: == 使用抽象相等比较,可能先做 ToPrimitive、ToNumber 或字符串转换;null 只与 undefined 宽松相等。工程代码默认使用 ===,详细边界见 JavaScript 运行机制与资深面试。(深入阅读:类型转换与相等算法

7. Q: Cookie、localStorage、sessionStorage 怎么选?

A: Cookie 适合短小会话标识并可配合 HttpOnlySecureSameSite;Storage 适合非敏感的前端状态,但值是字符串且可被脚本读取;大量结构化离线数据考虑 IndexedDB。更多场景见 浏览器 API 与安全场景。(深入阅读:Cookie、Web Storage 与 IndexedDB

8. Q: 大文件上传如何支持断点续传?

A: 客户端用 Blob.slice 分片,携带会话 ID、分片序号和文件标识上传;服务端记录已完成分片并在最后合并。扩展名和 file.type 只能做提示,文件头和内容必须由服务端复核。(深入阅读:文件上传与断点续传

9. Q: XSS 和 CSRF 的区别?

A: XSS 是不可信脚本进入受信任页面,CSRF 是借用浏览器已有身份发起非预期请求;分别用上下文输出编码/CSP,以及 CSRF token、SameSite 和 Origin 校验等措施防护。(深入阅读:跨域、XSS 与 CSRF

10. Q: IntersectionObserver 为什么比滚动监听适合曝光?

A: 它异步报告元素与视口或指定 root 的交叉比例,减少手动读取布局和滚动事件节流;threshold 是比例,不是像素距离。(深入阅读:判断元素是否进入可视区域