-
let和const从根源上解决var的三大问题:作用域混乱、变量覆盖、声明前误用;它们具块级作用域、不提升、禁止重复声明、支持TDZ,并确保for循环中每次迭代绑定独立变量。
-
:required伪类需配合HTML中真实存在的required属性才能生效,仅对<input>、<select>、<textarea>等原生表单控件有效;required="false"无效,动态添加需确保DOM更新,旧版Safari存在兼容性问题。
-
:empty只匹配完全无子节点(含文本、注释、元素)的元素,换行、空格、注释均使其失效;:blank才忽略空白符但兼容性差;稳妥替代法是服务端不渲染或JS判断innerText.trim()后控制显示。
-
float在现代开发中已无布局未来,仅剩邮件模板多栏排版和图文环绕两个不可替代场景;display:flow-root是标准清除方案,而迁移本质是思维重构——从“让元素浮起”转向“定义数据流与轴向”。
-
JavaScript创建自定义事件需用CustomEvent构造函数实例化并传入事件名和detail数据,再用dispatchEvent触发;监听用addEventListener,支持bubbles和cancelable配置以实现冒泡与取消。
-
“单向度依赖隔离”指业务模块仅暴露稳定、收敛、无副作用的接口,隐藏实现细节与状态,杜绝反向依赖;通过命名导出纯函数、default导出封装主入口、禁导可变绑定、审慎重导出,确保调用流向清晰可控。
-
利用DeviceOrientation事件可获取设备在三维空间中的方向信息,通过监听该事件并处理alpha、beta、gamma三个轴的旋转角度,实现如游戏控制或地图定向等功能;需注意浏览器兼容性与权限请求机制,在现代浏览器中应使用PermissionsAPI申请授权,并对数据进行校准以提升精度,同时结合requestAnimationFrame优化性能,避免频繁触发影响体验。
-
HTML5中设实线边框最直接方式是CSS的border:1pxsolid#000;,其中solid为必需关键词;手机端需应对高DPR导致的1px模糊问题,推荐伪元素+scale(0.5)方案。
-
本文详解dirReduc函数中栈(stack)的工作机制,重点解释stack[stack.length-1]的安全访问逻辑、空栈时的行为表现,以及方向对(如NORTH/SOUTH)如何被动态识别并移除。
-
HTML5中文字无法居中时,可用五种CSS方法:一、text-align:center;二、Flexbox的justify-content:center;三、margin:0auto配合width;四、绝对定位加transform:translateX(-50%);五、Grid的place-items:center。
-
事件循环先执行宏任务,期间将微任务加入队列,宏任务完成后立即清空微任务队列,微任务优先级高于宏任务。例如:同步代码(1、4)先执行,接着微任务(3)执行,最后宏任务(2)输出;多个微任务按FIFO顺序执行,包括过程中新增的微任务,如a→b→c。setTimeout即使设为0仍是宏任务,需等待下一轮。
-
IE8及更早版本不识别HTML5语义标签,因其DOM解析器忽略未知标签名,导致元素不存在、CSS无法匹配、JS查询返回null;必须在<head>最顶部用document.createElement提前声明所有新标签并配合display:block样式重置。
-
history.scrollRestoration='manual'用于禁用浏览器在前进/后退和刷新时自动恢复滚动位置,默认为'auto';设为'manual'后需配合beforeunload和pageshow事件手动调用scrollTo(0,0)确保置顶。
-
用localStorage记住收藏状态需用唯一key(如fav-${articleId}),存取时用JSON.stringify/parse避免类型错误,点击时通过dataset读ID、class切换图标、textContent更新文字,并在请求前后同步本地与UI状态。
-
<metacharset="utf-8">必须置于<head>最前面,且需配合HTTP响应头Content-Type、HTML5文档类型及文件实际UTF-8编码三者一致,否则易致中文乱码。