-
ES6中使用字符串的trimStart()方法可直接去除开头的空白字符。该方法会移除字符串头部的所有空白符(包括空格、制表符、换行符等),并返回一个新字符串,原始字符串不会被修改。1.trimStart()的使用方式为在字符串变量后直接调用,如originalString.trimStart()。2.它适用于处理用户输入、解析API数据、命令行参数清洗等场景,尤其在仅需去除前导空格而保留结尾空格时非常有用。3.与trim()不同,trimStart()只处理字符串开头部分,而trimEnd()则专注于末尾
-
key是VueDiff算法的关键标识,用于精准复用节点;无key或key不唯一/不稳定会导致无效更新、状态丢失和动画失效;应使用稳定唯一的数据字段(如id)而非index、随机数等。
-
使用clamp()可设置字体最小、推荐和最大值,实现响应式自适应;结合minmax()定义容器尺寸范围,使文本在不同屏幕下保持可读与美观,如font-size:clamp(16px,2.5vw,20px)配合grid布局,确保视觉协调。
-
:not()不支持嵌套,如:not(:not(.active))无效;仅支持单层且内部不能含:not()、:is()等;多:not()串联是“且”关系,非“或”;其内部选择器参与优先级计算,但本身不增权重。
-
复选框需设相同name(如hobby)且唯一value(如reading/coding/gaming)才有效;提交时仅勾选项以数组形式发送,无勾选则字段不存在;JS获取应用[...form.elements.hobby].filter(cb=>cb.checked).map(cb=>cb.value)。
-
可利用console.count与console.time组合在渲染函数埋点,识别高频无效重渲染:通过“快而频”特征(如每秒20+次、单次0.1ms)定位未memo、父组件传新引用或Context频繁变更问题。
-
必须用<nav>而非<div>实现语义化导航,配合<ul><li><a>结构、Flex布局、hover/focus双状态样式及纯CSS汉堡菜单,兼顾可访问性、SEO与响应式。
-
location.href赋值最直接安全;assign推入历史栈,replace替换当前记录;仅href可写,其他属性只读;跳转前须校验URL合法性防XSS。
-
HTML5语义化标签不直接提升排名,但显著增强SEO可读性与结构理解;<main>必须唯一且为直接子元素,缺失标题的<section>不构成逻辑分组,<nav>仅用于主导航,<img>缺alt将导致图片被忽略,<time>需ISO8601格式。
-
用JavaScript创建浏览器插件不难,核心是编写符合ManifestV3规范的manifest.json(含manifest_version、name、version等必填字段)、content.js、background.js和popup.html,并通过chrome://extensions加载调试。
-
解决CSS列表标题与内容混淆的关键是通过HTML结构分层和后代选择器精准控制样式。首先应确保结构清晰,避免使用<li>标签作为标题,推荐使用语义化标签如<h3>或<divclass="title">来区分标题与列表项。示例结构中将标题置于独立容器或使用专门类名,如<liclass="list-title">,再通过CSS后代选择器.list-container>li:not(.list-title)仅为实际列表项设置样式,而标题则单独定义格式。更优方案
-
innerHTML批量插入需一次性赋值完整HTML、严格转义用户输入、用事件委托绑定动态元素,并保留原容器属性。错误做法包括循环累加、未转义拼接、直接绑定事件或替换outerHTML。
-
BEM修饰符是DOM与CSS间的契约,需JS真实更新class、CSS严格按约定书写、DevTools验证;状态混乱主因是JS未更新DOM或CSS选择器错误,而非BEM失效。
-
识别MemoryBloat的关键在于区分可回收、有边界、符合预期的缓存占用与不可逆、持续累积的内存泄漏:前者随业务操作周期性涨落,GC后显著回落;后者表现为单向爬升、基线逐轮抬高、对象无法归零且释放失效。
-
用border实现三角形时无法直接添加边框,因其边框本身就是构成三角形的本体;可行方案是双层伪元素叠加模拟描边,或改用SVG以获得精确、稳定、高DPI友好的描边效果。