-
本文介绍一种高效、非递归但逻辑等价于递归的算法,将扁平的节点数组按parent-id关系构建成嵌套的树形结构,适用于文件系统、菜单、组织架构等场景。
-
支付页面需防误操作、保状态、抗重放、可访问:提交时禁用整个表单并设aria-disabled;服务端必须幂等校验;确认页须reset表单、移除监听器、replaceState;成功页订单号应入URLpath并服务端渲染,缓存头设为no-store。
-
Intl.ListFormat比手写join更可靠,因其内置多语言分隔规则(如英语用“and”、中文用“、”、日语用「・」),而手写无法覆盖语义差异;应按locale和选项缓存实例,传入前归一化为字符串数组,并注意SSR和响应式场景下的正确初始化与DOM方向处理。
-
JavaScript中的微任务队列没有明确的长度限制,它是一个动态增长的FIFO队列,与当前宏任务的生命周期绑定;1.微任务队列在规范层面无固定上限,理论上可无限增长;2.微任务优先级高于宏任务,在当前宏任务执行后立即清空微任务队列;3.若微任务无限生成,会持续占用主线程,导致页面冻结、宏任务无法执行;4.常见微任务包括Promise回调、MutationObserver、queueMicrotask();5.避免微任务过度膨胀的方法包括避免递归创建微任务、分解大型任务、使用setTimeout调度、利用
-
PWA必须包含start_url、display、icons(192x192和512x512PNG)、name、short_name字段,且serviceworker需在HTTPS下注册并处理fetch事件。
-
JWT是一种轻量级自包含身份验证机制,由Header.Payload.Signature三部分组成,服务端签发、客户端存储并携带,通过验签验证身份,适用于分布式系统。
-
CSS动画在隐藏页会被浏览器暂停,CPU无负担;而requestAnimationFrame不会自动感知可见性,需手动结合document.hidden和visibilitychange控制启停。
-
reset.css清除所有默认样式,适合完全自定义项目;2.normalize.css保留并统一默认样式,修复浏览器差异,更适合现代开发;3.多数项目推荐使用normalize.css,因其兼顾语义化与一致性。
-
Vue组件中emit不捕获原生DOM事件,子组件需监听DOM事件后调用emit抛出语义化业务事件;父组件应监听业务事件而非DOM事件,避免传递原生event对象、滥用.native修饰符,并采用kebab-case命名。
-
层提升由浏览器自动触发,非手动开关;常用CSS属性包括transform:translateZ(0)、will-change:transform、opacity:0.99和filter;但仅层提升不能强制调用独显,须配合Windows图形设置或NVIDIA控制面板绑定高性能GPU,并通过chrome://gpu及任务管理器GPU性能页验证是否生效。
-
sticky元素被裁剪需检查overflow非visible的祖先容器,必要时提级至更高层;遮挡问题需确保其定位上下文存在并设z-index;滚动容器决定粘性范围,非body子元素或含overflow祖先将限制效果。
-
JavaScript需异步编程,根本原因是单线程运行环境必须保持主线程响应,避免I/O阻塞导致页面冻结;引擎将耗时操作交由宿主环境后台执行,通过事件循环与微任务调度回调,await仅暂停async函数但不阻塞主线程。
-
使用地图API嵌入网页最常见,先获取百度、高德或Google地图的iframe代码插入HTML即可显示地图;需交互功能时可用JavaScriptAPI,申请密钥后通过JS初始化地图并添加标记等;注意遵守服务商授权条款。
-
框架调用你的代码,库由你调用;控制反转体现为执行权归属——axios.get()由你控制时机,useEffect等钩子则由框架在指定时机触发。
-
BEM通过组件名前缀绑定样式作用域,避免层级选择器冲突和覆盖;强制类名结构(block__element--modifier)提升语义明确性与复用性;原子组件需统一结构、无外部依赖、完整交互链路及性能优化。