每日一面
共 24 篇
每日一面 No.051 09-16 【每日一面】事件模型与事件委托
事件在 DOM 树里先捕获后冒泡,事件委托借着冒泡把 N 个监听器收成一个,顺带让动态节点自动生效。
22 min·7694 字 阅读全文 →
每日一面 No.048 09-15 【每日一面】类型系统与类型转换
JavaScript 的类型转换全都落在 ToPrimitive、ToString、ToNumber、ToBoolean 四个抽象操作上,把加号与宽松相等(==)的规则串起来,[] == ![]、{} + [] 这类题就不再是靠背的。
19 min·6824 字 阅读全文 →
每日一面 No.047 09-15 【每日一面】内存泄漏与垃圾回收
内存泄漏的本质是对象从根仍然可达、GC 回收不掉,所以要掌握的是标记-清除与代际回收的判定逻辑,以及全局变量、定时器、闭包、DOM 引用、事件监听、第三方库这六类高频泄漏场景的定位路径。
18 min·6412 字 阅读全文 →
每日一面 No.045 09-11 【每日一面】深浅拷贝
浅拷贝只复制第一层、嵌套引用依旧共享,深拷贝则要递归到每一层,还得用 WeakMap 兜住循环引用、用类型分支兜住 Date / RegExp / Map / Set。
19 min·6615 字 阅读全文 →
每日一面 No.044 09-10 【每日一面】this 指向与绑定规则
this 在函数被调用的那一刻才定下来,看调用方式就行:new > 显式 bind > 对象方法 > 默认绑定,而箭头函数不绑定 this,只一路向上继承词法作用域的 this。
21 min·7496 字 阅读全文 →
每日一面 No.042 09-09 【每日一面】深入理解 JavaScript 原型链
原型链是靠 __proto__ 把实例、原型与构造函数串起来的一条查找链:属性沿它一路查到 null,把 prototype 与 constructor 的关系理顺,class extends 的本质也就通了。
20 min·6862 字 阅读全文 →
每日一面 No.041 09-08 【每日一面】深入理解闭包
闭包是作用域链查找与垃圾回收共同作用的结果:内部函数让外部变量持续存活,用于数据私有、状态保持与防抖节流,但也要提防意外的内存泄漏。
16 min·5687 字 阅读全文 →
每日一面 No.040 09-04 【每日一面】浏览器渲染机制:重绘与回流
回流必带重绘,批读写、用 transform / opacity 走 GPU、借 will-change 和 rAF,是压住重排的三板斧。
21 min·7243 字 阅读全文 →
每日一面 No.039 09-04 【每日一面】事件循环机制
JS 单线程靠调用栈加任务队列运转,微任务永远先于宏任务清空,异步顺序全看这一条。
13 min·4720 字 阅读全文 →
每日一面 No.031 11-26 【每日一面】HTTP 和 HTTPS 的区别
HTTPS 就是 HTTP 套上 SSL/TLS,用对称 + 非对称加密和证书体系,保住传输的机密与身份。
9 min·3094 字 阅读全文 →
每日一面 No.030 11-24 【每日一面】webpack plugin 原理
plugin 是一个带 `apply` 的类,靠 Compiler / Compilation 的钩子介入构建的全生命周期。
20 min·6838 字 阅读全文 →
每日一面 No.028 11-17 【每日一面】如何解决内存泄漏
内存泄漏靠 DevTools 定位、靠切断引用来治理,常见元凶是全局变量、闭包、DOM 引用和第三方库。
11 min·3799 字 阅读全文 →
每日一面 No.027 11-17 【每日一面】webpack loader 原理
loader 是资源的翻译器,把非 JS 资源串成管道、从右到左编译成模块。
15 min·5325 字 阅读全文 →
每日一面 No.025 11-13 【每日一面】BOM 是什么
BOM 管的是 window、location、history、screen 这些浏览器窗口能力,和管文档结构的 DOM 是两回事。
9 min·3146 字 阅读全文 →
每日一面 No.024 11-12 【每日一面】装饰器原理
装饰器是类定义时执行的元编程语法糖,给类、方法、属性、访问器加能力,比高阶函数更声明式。
15 min·5362 字 阅读全文 →
每日一面 No.022 11-04 【每日一面】实现一个深拷贝函数
JSON 方案扛不住函数与循环引用,健壮的深拷贝要递归遍历,并用 WeakMap 兜住环、用特判兜住 Date / RegExp / Map / Set。
16 min·5438 字 阅读全文 →
每日一面 No.020 10-30 【每日一面】你怎么理解 Proxy 的
Proxy 用 get / set / has 等拦截做出非侵入式代理,也正是 Vue3 响应式的基石。
12 min·4333 字 阅读全文 →
每日一面 No.019 10-29 【每日一面】对 Promise.race 的理解
Promise.race 谁先 settle 就返回谁,正好用来做超时控制与请求重试。
11 min·3954 字 阅读全文 →
每日一面 No.018 10-29 【每日一面】async/await 的原理
async/await 不过是 Generator 加自动执行器再套一层 Promise 的语法糖,yield 对应 await、next 对应自动推进。
12 min·4044 字 阅读全文 →
每日一面 No.017 10-27 【每日一面】手写防抖函数
防抖等你不动了再执行、节流按固定节奏执行,搜索输入这类高频触发场景全靠它。
6 min·1946 字 阅读全文 →
每日一面 No.016 10-10 【每日一面】盒子模型
标准盒模型是内容 + 内边距 + 边框 + 外边距,而 BFC 能管住外边距合并、清浮动和两栏布局。
4 min·1513 字 阅读全文 →
每日一面 No.008 10-09 【每日一面】获取文字的真实宽度
量文字宽度要么借隐藏 DOM 的 measureText,要么上 canvas 的 measureText,但都得防字体不一致和 emoji 这些坑。
8 min·2708 字 阅读全文 →
每日一面 No.007 10-09 【每日一面】任意 dom 元素吸顶
吸顶首选 `position: sticky`,但它受容器块、top 值和祖先 overflow 束缚,卡住时用 JS 滚动监听兜底。
13 min·4449 字 阅读全文 →
每日一面 No.004 10-09 【每日一面】React Hooks 闭包陷阱
Hooks 里的闭包陷阱来自渲染快照与依赖缺失,靠 useRef、补依赖或把状态对象化就能绕开。
9 min·3056 字 阅读全文 →