-
Express默认不会捕获路由处理器中抛出的异步错误(如async函数内的throw),导致进程崩溃;需显式调用next(err)将错误传递给全局错误处理中间件。
-
节流是固定频率执行,防抖是停止触发后执行一次;节流适用于需持续响应的场景如滚动监听,防抖适用于只关心最终状态的场景如搜索联想。
-
可通过navigator.connection.saveData检测用户是否启用省流量模式,仅HTTPS下可用且需兼容性判断;为true时可跳过非关键图片、禁用动画、延迟加载、关闭第三方脚本等,并结合@media(prefers-reduced-data)进行样式降载。
-
标记-清除是V8等现代引擎唯一依赖的核心垃圾回收算法,它从根(如window、调用栈变量)出发递归标记可达对象,未被标记的循环引用对象也会被清除;常见泄漏点包括未清理setInterval、DOM移除后未解绑事件监听器、闭包过度捕获及console.log隐式保留引用。
-
Intl.ListFormat比join('、')更可靠,因其依据locale自动适配语言特有的分隔逻辑(如中文顿号、英文牛津逗号、日语「・」、阿拉伯语RTL排版等),而join()硬编码符号无法处理冠词、空格、连接词及书写方向差异。
-
初次加载transition闪动是因首帧未预热合成层,需用transform:translateZ(0)提前触发硬件加速,并确保backface-visibility:hidden在其后声明,且避免display:none销毁图层。
-
-webkit-line-clamp在Firefox中不生效,因其是WebKit私有属性,Firefox长期未支持;虽68+版本原生支持无前缀line-clamp,但旧版仍忽略该属性,且部分场景需配合display:-webkit-box等前提条件才生效。
-
原生details元素可直接实现语义化、无障碍折叠功能,无需手写JS:用<details><summary>标题</summary>内容</details>即可,支持键盘操作、自动aria状态,兼容主流浏览器(Chrome12+等),IE除外。
-
AnimationWorklet通过将关键帧计算移至独立线程,避免主线程阻塞,实现60/120fps高性能DOM动画;需注册animator类、绑定KeyframeEffect、仅更新transform/opacity等合成属性,并遵循函数式动画范式。
-
CSS变量需配合var()引用才能生效,媒体查询中必须在:root下重设变量值,且引用处须写font-size:var(--font-size-base);漏引用、定义位置错、单位缺失、!important覆盖或IE不支持均导致失效。
-
Vue3响应式系统基于Proxy实现,通过track收集依赖、trigger精准触发更新,依赖在副作用执行时隐式注册,仅更新关联组件,避免冗余渲染。
-
JavaScript数组索引本质是字符串属性名,如arr[0]等价于arr['0'];length仅由最大数字索引决定,非数字属性不影响长度;for...in会遍历所有可枚举属性(含非索引属性),故不适用于数组元素遍历。
-
opacity动画需配合transition或@keyframes才生效;仅设opacity值无动画效果。transition适用于简单状态切换,animation适用于复杂时序控制;须注意时长声明、forwards填充模式及可访问性影响。
-
optgroup是select元素内用于语义化归类option的容器标签,必须作为select的直接子元素,不可嵌套或脱离select使用,其核心价值在于提升可访问性与屏幕阅读器支持。
-
min-height:100vh失效主因是html和body缺失高度约束,需设min-height:100%并配合Flex布局(bodydisplay:flex;flex-direction:column)及main的flex:1与min-height:0才可靠实现满屏。