-
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精准触发更新,依赖在副作用执行时隐式注册,仅更新关联组件,避免冗余渲染。
-
现代浏览器无需前缀;wrap-reverse翻转换行方向而非子项顺序;IE10–11需-ms-flexbox且不支持wrap-reverse;align-content控制行对齐,IE不支持。
-
在Vue3中使用ref结合TypeScript接口可提升类型安全与可读性,需通过泛型标注ref类型,优先用interface定义实体,初始化值须符合接口约束,解构时避免丢失响应性与类型,复杂状态推荐reactive配合接口,简单字段用ref。
-
JavaScript的OOP三大特性确实存在,但基于原型机制:封装靠闭包/Symbol/#私有字段实现;继承通过原型链(如Object.create或extends)实现;多态依赖鸭子类型与运行时方法重写。
-
JavaScript代码混淆通过转换源码结构降低可读性,保护知识产权、增加逆向成本、隐藏敏感信息,常见方式包括变量名替换、字符串编码、控制流扁平化、死代码注入,并结合反调试技术如debugger语句、开发者工具检测、堆栈检查、console重写等,提升攻击者分析难度。