-
函数组合(compose)从右到左执行,如f(g(h(x)));管道(pipe)从左到右执行,更符合阅读顺序;二者均通过reduce或reduceRight实现,依赖纯函数与一元化设计以保障可靠性。
-
HTML本身不支持工厂模式,“HTML工厂模式”实为用JavaScript在浏览器中模拟工厂逻辑,动态创建并组装DOM元素;核心是封装document.createElement等操作为可扩展、解耦的函数或类,统一接收配置对象、返回HTMLElement实例,避免硬编码与原型污染,按项目复杂度选用简单工厂、工厂方法或抽象工厂结构。
-
BEM本身不提供CSS全局变量,其block前缀(如search-form__input)是最轻量可控的命名空间机制;它通过三段式类名声明作用域边界,使样式归属、角色和状态明确,从而避免class冲突导致的覆盖,但前提是block必须真实存在且不越界。
-
transform:translate(-50%,-50%)配合position:fixed能居中,是因为fixed使元素脱离文档流并相对于视口定位,而translate的百分比基于自身宽高,结合left:50%和top:50%将左上角移至视口中心后再反向偏移一半尺寸,实现视觉居中。
-
必须用Mixin而非重复手写flex属性组合,因其能杜绝拼写错误、集中响应式逻辑、支持参数化复用;:extend()仅适用于无参静态结构共享。
-
直接改--bs-gutter-x或--bs-gutter-y最轻量推荐,因不依赖Sass编译;不能直接改.row的margin或.col的padding,否则破坏负边距与正内边距配对机制,导致内容偏移、换行错乱。
-
JavaScript引擎不对reduce做循环展开优化,因其是封装在引擎内部的原生高阶函数调用;性能关键在于回调内联性、数组结构、类型稳定性及必要时改用for循环。
-
new操作符的模拟需四步:1.用Object.create(constructor.prototype)创建空对象并绑定原型;2.用constructor.apply(obj,args)绑定this并执行构造函数;3.若构造函数返回对象或函数则返回它,否则返回新对象;4.整合为myNew函数。
-
闭包不直接造成GC压力,而是因意外延长局部变量生命周期使本该回收的对象滞留堆中;WebGL渲染循环中尤需警惕捕获大对象、频繁创建新闭包及隐式持有引用等问题。
-
text-transform:uppercase仅改变英文字符的视觉渲染为大写,不修改DOM原始值,对中文、数字、标点无效;适用于p、div、span等文本元素,禁用于input/textarea等需数据一致性的场景。
-
内联缓存(IC)是V8自动启用的优化机制,其效率取决于对象结构稳定性和访问模式一致性;通过预热典型对象、固定属性顺序、避免动态修改和禁用with/eval/Proxy等陷阱,可使IC快速进入高效单态;用--trace-ic和%DebugPrint可验证状态。
-
::marker{color:red}未生效,是因为部分旧版浏览器(如旧Safari/Firefox)对::marker支持有限,且::marker不继承li的color,但可能受ol的color影响;需显式为li::marker设置color并隔离文字色,兼容性差时应降级使用list-style-type:none+counter()模拟。
-
indexOf在document.body.innerHTML中搜不到中文或换行,是因为浏览器已将原始HTML解析并规范化:换行符被压缩为空格、连续空白合并、中文可能被转义为中文,且标签自动闭合,导致字符串与渲染内容不一致。
-
align-items-stretch在.row上无效是因为Bootstrap4的.row默认display:block,非Flex容器;需手动加d-flex类或升级至Bootstrap5并确保display未被覆盖。
-
:has()伪类兼容性有限,Chrome105/Firefox103/Safari16.4起支持,旧版本静默失效;不支持伪元素和状态伪类;构建工具可能误删;JS监听+class切换更可靠。