-
WebLocksAPI通过命名锁协调异步操作,确保共享资源访问的串行化。使用navigator.locks.request('lockName',callback)申请锁,回调执行完毕后自动释放。多个请求按顺序排队,前一个释放后下一个获得锁,避免竞态。适用于localStorage或IndexedDB等场景,如计数器递增时保证顺序执行。合理设计锁粒度,避免过粗阻塞或过细难维护,不同资源用不同锁名。不建议在锁内请求其他锁以防死锁,可结合AbortSignal实现超时控制。API轻量但需注意持有时间与嵌套逻辑
-
justify-content在Grid容器中不起作用,是因为容器未设置display:grid(或inline-grid);它控制整个网格在行内轴上的对齐,而justify-items控制单元格内容对齐,二者作用域不同。
-
JavaScript的Date.prototype.getMonth方法返回的是0到11的月份值,需加1才能得到实际月份。1.getMonth()返回0-indexed值,1月为0,12月为11;2.获取当前或指定日期的月份时需注意时区问题;3.使用数组映射或Intl.DateTimeFormat将数值转为可读月份名;4.getMonth()基于本地时区,getUTCMonth()基于UTC时间,根据业务需求选择使用。
-
推荐用display:flex实现横向列表,只需在ul上设置display:flex即可自动横向排列,支持响应式、等距对齐;float方案需手动清浮动且兼容性差,仅适用于IE8/9等老旧环境。
-
includes比多个||更可靠,因其严格相等、支持NaN、逻辑集中;改写为constvalidColors=['red','blue','green'];if(validColors.includes(x)){...};注意字符串和类数组需分别处理,大数组高频查询建议用Set。
-
CoreWebVitals由浏览器根据真实用户行为计算,HTML仅是影响因素之一;<linkrel="preload">可加速LCP关键资源加载,width/height和decoding="async"有助于防控CLS,而过度内联CSS反可能延迟FCP。
-
grid自动排列留空是因为跨越轨道的项不触发回填,后续项按源顺序和当前行剩余空间推进;启用rowdense或columndense可密集填充空位,但会破坏DOM与视觉顺序一致性。
-
type="email"不可信,因其仅按RFC5322极小子集校验,放行user@domain..com等无效格式,且存在兼容性问题;需JS补强+后端兜底三层验证。
-
HTML页面乱码主因是编码声明与文件实际保存编码不一致,需确保编辑器保存格式、<metacharset>标签、HTTP响应头三者统一为UTF-8且无BOM。
-
JavaScript对象属性遍历顺序严格遵循ES2015规范:先整数索引升序,再字符串键插入顺序,最后Symbol键插入顺序;for...in和Object.keys()仅遍历可枚举字符串键且不保证规范顺序;Symbol属性不被JSON.stringify序列化。
-
stopImmediatePropagation()用于阻止同一元素上后续同类型事件监听器执行并阻止事件冒泡。它在需中断同元素多个监听器时生效,调用后仅影响绑定顺序在其后的监听器,已执行的不受影响,且不干扰preventDefault()。
-
:visited伪类对<img>无效,因浏览器隐私限制仅允许作用于<a>且禁用filter;可靠方案是用JavaScript结合localStorage或class切换实现点击灰度效果。
-
Promise是异步流程控制的底层契约,其状态不可逆、then返回新Promise、catch仅捕获前序rejected,违背Promise/A+规范将导致静默失败或卡死。
-
过早晋升表现为老年代单次晋升量异常大(如>20MB/sec)、TenuringDistribution中年龄阈值骤降至2且age1对象占比过高、老年代呈阶梯式增长且FullGC释放极少;需排除大对象直入、System.gc()及GC算法差异干扰。
-
最有效解法是正确使用.clearfix类:必须包含content:"";display:table;clear:both,且加在直接包裹浮动子元素的父容器上;单独写clear:both在父元素上无效,因clear只影响自身位置,不解决父容器无法感知浮动子项的高度塌陷问题。