-
document.documentElement.scrollTop在Chrome/Firefox中常为0,因实际滚动容器是body;应优先使用window.pageYOffset或document.scrollingElement.scrollTop获取准确滚动距离。
-
WeakSet是防递归死循环的唯一合适选择,因其弱引用不阻止对象回收、仅支持对象且仅提供存在性判断,需在递归前用has()检查、add()立即标记,避免内存泄漏与误用。
-
子元素margin撑不开父容器是因外边距折叠,需触发BFC(如display:flow-root);width:100%溢出因box-sizing默认为content-box,应设border-box;absolute定位需父设position:relative;Flex中margin:auto可居中,前提父为flex且未覆盖对齐属性。
-
触摸交互必须用BEM修饰符(如btn--pressed)配合JS显式控制,禁用:active伪类;需同步touchstart/touchend、focus/blur及aria-pressed,并确保PurgeCSS保留状态类。
-
必须区分三类全局污染:Program级var声明、隐式赋值(a=1)、显式window.xxx挂载;ESM/CJS模块需结合导入关系分析;替换var为let/const会破坏typeof检测、for循环闭包及UMD环境判断,且Babel默认不转顶层var。
-
可通过可视化编辑器的“文本”模式直接输入HTML;2.Gutenberg中使用“自定义HTML”区块插入代码;3.小工具区域添加HTML用于侧边栏或页脚;4.高级用户可修改主题文件手动添加,推荐普通用户使用区块或小工具方式安全操作。
-
前端大数据量序列化卡顿的根本原因是JavaScript单线程导致计算与UI渲染争用主线程;需通过WebWorker剥离密集计算,并优化任务内部避免深拷贝、采用流式处理和结果缓存,辅以小数据量直行与加载态提示等兜底策略。
-
BigInt是ES2020引入的原始类型,用于安全表示任意精度的大整数,解决Number类型在±(2^53-1)范围外的精度丢失问题;可通过数字加n后缀或BigInt()函数创建,支持算术、逻辑、比较和位运算,但不支持与Number混合操作、Math方法、一元加号及默认JSON序列化,适用于大ID、密码学等高精度场景。
-
JavaScript性能优化核心是减少主线程负担、降低资源加载压力、提升执行效率,关键策略包括代码压缩(用Terser等工具精简语法、TreeShaking、图片字体优化)和懒加载(路由级、组件级、图片、第三方SDK按需加载),辅以减少长任务、避免强制同步布局、缓存计算结果及使用现代API。
-
aria-controls仅声明元素间的关联关系,不触发任何行为;需配合JavaScript控制显隐、同步aria-expanded和hidden/aria-hidden状态,并确保ID存在且目标有role="region"等可访问性属性。
-
使用JavaScript实现无限滚动可以通过监听滚动事件并在接近页面底部时加载更多内容来实现。具体步骤包括:1.监听滚动事件,判断是否接近页面底部;2.使用fetchAPI加载更多内容并添加到页面;3.实现图片懒加载以优化性能;4.使用节流技术防止频繁触发滚动事件;5.考虑虚拟滚动以处理超大数据集,确保只渲染当前视图中的内容。
-
基础分页组件通过ul和li构建语义化结构,包含上一页、页码、下一页按钮,CSS实现居中布局、统一尺寸、悬停变色及当前页高亮,禁用状态置灰并禁用交互,支持响应式与JavaScript扩展,适用于各类项目翻页场景。
-
Less和Sass虽都支持BEM,但&行为(Less仅绑定直接父级、Sass可灵活引用)、变量作用域(Less全局覆盖、Sass块级优先)及嵌套编译逻辑不同,照搬易致选择器错误或覆盖失效。
-
现代浏览器中autoplay基本无效,因Chrome、Firefox、Safari自2018年起强制执行媒体策略:有声媒体必须由用户手势(如click、touchstart)触发,否则play()抛出DOMException错误;静音视频可自动播放,但需配合用户交互后解除静音并调用play()。
-
JavaScript实现扫码功能的核心是通过getUserMediaAPI获取摄像头视频流,并结合jsQR、QuaggaJS或ZXing-JS等解码库对视频帧进行实时图像识别与解码,整个过程需在HTTPS环境下运行以确保权限正常调用;首先利用navigator.mediaDevices.getUserMedia()请求摄像头权限并将媒体流绑定到video元素以实现预览,随后通过requestAnimationFrame循环将视频帧绘制到canvas上并提取图像数据,交由选定的解码库进行解析,一旦识别成功即