-
JavaScript支持函数式编程但需主动约束:不可变性(const≠不可变,需Object.freeze或immer)、纯函数(无副作用、输入输出确定)、柯里化(提升复用而非性能),核心是习惯而非语法。
-
BEM通过将作用域编码进类名(如search-form__submit)实现样式隔离,避免全局冲突;禁止无上下文规则、!important和嵌套后代选择器,强调Block功能闭环与命名一致性。
-
^=匹配属性值开头字符串,区分大小写且纯字面匹配;$=匹配结尾字符串,同样区分大小写;=要求属性值完全相等;*=进行子串搜索,最宽松但易误匹配。
-
在JavaScript中通过JSDoc或TypeScript可标注对象可选属性:1.JSDoc用[prop]表示可选,如@typedef{Object}UserConfig@property{string}[email];2.TypeScript用prop?:type,如age?:number;应根据项目选择规范以提升可读性和维护性。
-
PendingPromise本身不导致内存泄漏,但若持有闭包、DOM、大对象或async上下文等强引用,则会阻碍GC;需通过DevTools检查Retainers、避免悬空链、注入超时与取消机制来防控。
-
HTML本身不能CDN加速,需将script/link/img等外部资源替换为CDN域名URL;通过浏览器Network面板检查RequestURL是否为CDN地址及响应头x-cache等字段验证是否命中CDN。
-
三位十六进制颜色无浏览器解析歧义,所有现代浏览器均将#rgb统一展开为#rrggbb;仅当RR、GG、BB各自成对相同时才可安全缩写,如#ff6600→#f60,而#fe0123不可缩,误缩会导致色值偏差。
-
:read-only和:read-write伪类仅响应HTML的readonly属性(非JS属性),仅对input/textarea原生生效,contenteditable需验证,disabled元素不匹配;:read-only元素仍可聚焦和提交,而:disabled彻底禁用交互;IE和旧Safari不支持,需@supports或属性选择器兜底。
-
原生Set没有symmetricDifference是因ES2015设计时为避免API膨胀而刻意省略,需手动实现;可靠写法是遍历两集合分别添加对方不含的元素,返回新Set,兼容任意可迭代对象且基于SameValueZero比较。
-
原生<dialog>默认不渲染,必须用showModal()或show()激活;仅设open属性可初始显示,但showModal()才启用遮罩、ESC关闭和焦点锁定。
-
JavaScript类型转换分隐式和显式,隐式转换在==、+、-等运算及布尔判断中自动发生,如1+"2"→"12"、"6"-"2"→4、[]为真值;对象转换先调用valueOf()再toString()。
-
需在input和blur事件中调用checkValidity()触发红框和气泡,用setCustomValidity('')重置状态并自定义提示文案,禁用reportValidity()避免干扰,通过JS驱动验证状态确保:invalid生效。
-
absolute子菜单总飘左上角是因为父级未设position:relative;它相对于最近非static祖先定位,若无则贴body;须确保直接父容器(如li.menu-item)设relative,且DOM无缝隙、交互全覆盖。
-
ReactTablev8中表格不渲染通常由列定义属性名错误导致:accessor应为accessorKey,Header应为header(大小写敏感),二者任一错误都会使表头和单元格内容静默失效。
-
flex容器上设break-inside:avoid无效,因分页控制需作用于块级子项;必须为每个卡片等子项单独添加该属性,并确保无overflow:hidden、transform、绝对定位等干扰,推荐@mediaprint中降级为block布局。