-
JavaScript内存管理依赖自动垃圾回收,但不当编码会导致内存泄漏。引擎通过标记-清除算法回收不可达对象,常见泄漏包括意外全局变量、未清理定时器、闭包引用大对象及DOM引用残留。使用严格模式、及时解绑事件与设引用为null可预防问题。借助ChromeDevTools分析堆快照和内存时间线,能有效检测泄漏。
-
JavaScript(Node.js/Deno)的ES模块规范不支持类似Java的private/protected访问修饰符,无法原生限制某export仅被指定文件导入;真正的模块封装需通过架构设计(如依赖注入、模块封装层或作用域隔离)来实现。
-
WebComponents通过CustomElements、ShadowDOM和HTMLTemplates实现原生组件化。CustomElements允许创建带行为的自定义标签,需继承HTMLElement并用customElements.define注册,标签名必须含短横线。ShadowDOM通过attachShadow提供隔离的DOM和样式,mode为'open'可访问shadowRoot,'closed'则不可,内部使用<slot>分发内容。HTMLTemplates定义不渲染的模板结构
-
LVHA顺序是硬性规则:a:link→a:visited→a:hover→a:active,因浏览器按状态互斥逻辑解析,顺序错则:visited等伪类被忽略;且:visited仅支持有限颜色类属性,其余样式被浏览器静默丢弃。
-
应优先用if...else处理比较运算、逻辑组合或运行时计算;switch仅适用于多个固定值的等值匹配,否则易因漏break、类型不匹配或浮点误差出错。
-
应添加transition属性,如transition:transform0.5sease-out,并为常态设置transform:rotate(0deg),否则因缺失过渡声明导致瞬时跳变或卡顿。
-
现代CSS提供Flexbox、Grid、自定义属性与calc()、ContainerQueries、aspect-ratio与object-fit五大替代方案。Flexbox适用于一维布局如导航栏;Grid支持二维复杂结构;自定义属性与calc()实现动态计算;ContainerQueries达成组件级响应式;aspect-ratio与object-fit统一媒体容器宽高比与缩放。
-
箭头函数的this指向固定且不可修改,它捕获定义时外层普通函数的this值;不能用作构造函数、无prototype、无arguments、不支持yield,特定场景下完全不可用。
-
用position:absolute布局图片画廊易错位,主因是父容器padding/border未清空或未设relative;应设padding:0、border:none、box-sizing:border-box,并用transform:translate(-50%,-50%)居中,配合box-shadow替代border实现灵活边框。
-
没有“最好”的CSS工具,只有最匹配项目的:原子化框架适合MVP快速迭代,CSS-in-JS适配设计系统,原生CSS+PostCSS适合静态站点,大型中后台应重架构分层而非框架选型。
-
border-radius生效需配合background-color或border;img加圆角须自身设置并设display:block;box-shadow不随圆角变形,需overflow:hidden或filter:drop-shadow();移动端小圆角发虚宜用偶数像素或50%。
-
应使用requestAnimationFrame替代setTimeout实现平滑动画,配合预加载图片(newImage()+onload)、避免复用实例、用opacity/visibility控制切换,并通过picture或服务端适配WebP等格式。
-
严格模式禁用with语句、给只读属性赋值、函数参数重名、arguments映射形参及callee/caller;要求"usestrict"置于顶层或函数首行;使this为undefined、未声明变量赋值报错;ES6模块默认启用。
-
创建元素节点必须用document.createElement()而非innerHTML,避免清空子节点、重排和丢失事件;textContent用于纯文本防XSS,innerHTML会解析HTML;插入用append/prepend/before/after,删除前须检查parentNode,替换用replaceWith更灵活。
-
flex布局中用margin-left:auto推最后一个元素靠右的原理是利用flex剩余空间分配机制:该元素“吃掉”左侧所有可用外边距,从而右移;需父容器display:flex且子元素为直系子项,不可混用justify-content:flex-end或设置flex-grow:1。