-
HTML5使用<img>标签嵌入图片,需设src和alt属性;支持srcset/sizes实现响应式;可用<figure><figcaption>增强语义;loading="lazy"实现懒加载;onerror处理图片缺失。
-
304状态码是协商缓存生效的信号,表示资源未修改,浏览器复用本地缓存。它依赖客户端携带If-Modified-Since或If-None-Match头,服务端比对后返回空响应体,节省带宽并提升性能。
-
Proxy和Reflect是配合使用的对象行为控制机制:Proxy拦截操作,Reflect提供与之对应的标准化底层方法,二者结合可实现安全、可靠、可维护的元编程逻辑。
-
preventDefault没生效的主因是未在form的submit事件中同步调用:必须监听form元素的submit事件,首行调用event.preventDefault(),避免异步、委托或内联写法错误(如onsubmit中未returnfalse)。
-
模板字符串必须用反引号定义,支持多行与${}表达式插值,可嵌套及配合标签函数实现XSS过滤等高级功能,但默认不转义且旧版Node.js可能不支持。
-
unshift()时间复杂度为O(n),数组越长性能越差;push()为O(1),始终高效。5万元素下unshift100次超300ms,push同量仅<0.5ms,差距百倍起跳。
-
应始终为target="_blank"添加rel="noopener"以防止openerabuse攻击,因其可切断window.opener引用、消除安全风险与性能隐患,且现代审计工具将其缺失标为严重问题。
-
WebShareTargetAPI需完整PWA环境:有效manifest.json(含share_target、200响应、正确Content-Type)、HTTPS、支持浏览器(Chrome/Edge≥88,Safari不支持),且share_target.action必须为可访问的相对路径,仅支持GET传文本/URL,不支持文件接收。
-
Object.getOwnPropertyDescriptors可完整获取对象自有属性描述符,实现保留getter/setter的精准克隆;普通方法如Object.assign、展开运算符和JSON序列化均无法复制访问器函数本身。
-
lang属性是浏览器和辅助技术的关键信号,决定拼写检查、断字、字体回退及屏幕阅读器发音;必须准确设置BCP47标准值,局部覆盖多语言内容,动态插入时同步声明,否则导致语音错误、翻译失效或CSS断字失效。
-
真正可用的信用卡号输入框需实现「实时格式化+光标位置保护+删除逻辑适配」;应优先用beforeinput事件结合inputType判断操作类型,清除非数字后按卡组织规则(如Visa4-4-4-4、Amex4-6-5)分组,禁用硬编码空格与强制截断。
-
TypeScript不支持抽象静态方法,但可通过实例化前调用抽象实例方法、构造函数中提前验证,或结合Builder模式实现“类级别强制校验”的等效效果。本文提供可落地的三种解决方案,并重点推荐构造时验证的简洁实现。
-
CSSModules文件名必须与BEM块名严格对齐,类名映射依赖文件名作为Block根,如Button.module.css中.btn解析为Button_btn__abc123;块名需语义一致、元素用双下划线、修饰符须与Block同级;classnames可安全拼接BEM类名;postcss-bem-linter是BEM落地的校验底线;localIdentName应保留[name]和[local]以利调试。
-
replaceAll在现代环境(Chrome85+/Firefox78+/Safari13.1+/Node.js15.0+)原生支持,专用于全局字面量替换,不接受带g标志的正则,纯字符串匹配不转义元字符,简单替换更安全高效,复杂逻辑仍需replace。
-
z-index仅对非static定位元素生效,且受父级堆叠上下文限制;每个堆叠上下文独立排序,子元素z-index无法突破父级边界;调试需检查position属性、意外创建的堆叠上下文及参照物是否同层。