-
移动端:hover点击后不消失是浏览器悬停状态延迟清除机制所致;iOSSafari等将首次触摸视为:hover起点但无对应“离开”事件,需通过ontouchstart属性或JS主动清除。
-
async函数默认返回Promise,这是语言规范强制规定:无论是否显式return,其返回值均被Promise.resolve()包装;无return时等价于Promise.resolve(undefined),且执行体作为微任务异步调度。
-
答案是使用AST进行JavaScript代码转换可实现精确的结构化修改。首先通过解析器(如acorn或@babel/parser)将代码转为抽象语法树,再利用遍历器(如estraverse或@babel/traverse)配合访问者模式定位节点,接着在转换阶段修改、增删节点以实现变量重命名、语法升级等操作,最后由代码生成器(如escodegen或@babel/generator)将AST还原为可执行代码,并支持SourceMap以保障调试体验。相比正则表达式仅做文本替换,AST能理解代码语义,避免误改字符
-
sessionStorage和localStorage生命周期与共享范围不同:前者仅限当前标签页会话,关闭即清空;后者持久存储,除非手动清除。适用场景上,前者适合临时数据如表单草稿,后者适合长期偏好如主题设置。
-
Cookie的path和domain必须显式指定且严格匹配,否则跨路径或子域无法读取或删除;path须以/开头(如path=/),domain需带前导点(如domain=.example.com),删除时path和domain必须与写入时完全一致。
-
当两个组件为兄弟关系(同级、无嵌套)且需跨组件触发行为时,推荐使用forwardRef+useImperativeHandle暴露可控方法,避免冗余状态提升和副作用监听,实现清晰、高效、可维护的通信。
-
应使用rgba()或hsla()设置背景透明度,而非opacity;前者仅影响背景色,后者使整个元素及子元素变透明,导致内容发灰。
-
Python3.14JIT对单态属性访问的优化本质是绕过动态查找链,直接生成带固定偏移的内存加载指令;其通过类型与内存布局双守卫实时验证单态性,守卫失败即去优化,成功则生成等价于C结构体访问的零开销机器码。
-
纯CSS实现hamburger→×动画的关键是用伪元素构建三线结构并协同transform:中间线opacity:0,上下线分别rotate(45deg)/rotate(-45deg)加translate交汇成×;需统一用transform控制偏移以避免原点漂移,同时排查pointer-events和z-index导致的点击失效。
-
preload属性控制音频预加载时机与策略,值为none(建议不加载,但可能取少量数据)、metadata(仅加载元信息)、auto(由浏览器决定,非强制);其行为受浏览器实现、网络状态、用户交互及autoplay等属性影响。
-
WebWorkers允许在浏览器中启动独立于主线程的子线程处理耗时计算,避免阻塞UI;需通过postMessage通信,Worker必须从独立JS文件加载,使用结构化克隆传递数据,支持transferable提升性能,任务应分片并可中断,调试可通过DevToolsWorkers面板进行。
-
虚拟DOM的位运算标记是Vue3在类型判断效率与内存开销间的精妙平衡,用整数二进制位标识节点身份(如ELEMENT=1、STATEFUL_COMPONENT=2),通过按位或组合、按位与快速判断,兼顾性能、内存、可扩展性与编译友好性。
-
用border画箭头而非SVG或图片,因伪元素::before/::after不占DOM节点,可零JS、零资源实现单色实心三角,兼容IE8+;但不支持描边、渐变或圆角。
-
Flex换行后行间距“过大”是align-content:stretch默认拉伸整行所致,它将交叉轴剩余高度均分给各行,撑开子项造成视觉错觉;应改用align-content:flex-start关闭拉伸,再配合row-gap设置固定行距。
-
Next.js13+app目录下CSS生效需严格遵循导入规则:仅app/layout.tsx中import'./globals.css'有效;非模块CSS不可在组件内导入;CSSModules必须用.module.css后缀并按对象使用;删除next.config.js中冗余css配置;Tailwind需配置content路径;禁用_customDocument,所有样式注入须通过layout顶层import实现。