-
JavaScript模块通过export导出、import导入,支持命名导出/导入和默认导出/导入,可重命名、批量转发;路径需带扩展名或./开头,浏览器需type="module",Node.js需配置"type":"module"或.mjs后缀。
-
闭包本身不会导致内存泄漏,但不当持有对闭包中变量的外部引用会使本该被回收的变量持续存活。关键在于闭包捕获了不该长期持有的大对象或DOM引用,如全局变量持有闭包、事件监听器未解绑、定时器未清除、缓存使用不当等。
-
高分屏下<img>模糊主因是浏览器用低分辨率图强行拉伸填充CSS像素区域,触发双线性插值致边缘发虚;根本解法是用srcset+sizes让浏览器按设备像素比自动选对图源,并配合image-rendering等CSS控制重采样。
-
首先确保使用文本编辑器将HTML爱心代码保存为.html文件,如"love.html",并防止系统添加.txt后缀;接着可通过专业代码编辑器如VisualStudioCode保存文件后在浏览器中打开预览;也可直接双击已保存的HTML文件或右键选择浏览器打开,若代码无误,浏览器将显示红色爱心动画即表示运行成功。
-
分代回收是基于对象存活规律的工程优化:短命对象应快速回收,长命对象应稳定驻留老年代,通过分代减少全堆扫描开销,并需针对性编写代码与配置参数。
-
必须用toLowerCase()统一转小写再比较,因==严格区分大小写,“React”≠“react”;需双侧调用并防null/undefined,推荐tag?.toLowerCase()===query?.toLowerCase()。
-
Notepad++编辑HTML需三步避坑:①保存编码选“UTF-8无BOM”,否则DOCTYPE前隐含字符致怪异模式;②图片/CSS路径须相对于HTML文件位置,非编辑器路径;③file://协议下必须Ctrl+F5强制刷新,或起本地服务http://localhost:8080。
-
实时协作编辑的核心难点是多用户异步修改同一数据时如何保证最终一致性且不丢失操作;操作转换(OT)通过动态变换操作位置、合并与逆操作等机制解决该问题,但实现复杂,CRDT是其现代替代方案。
-
mouseenter不冒泡且仅在鼠标首次进入绑定元素自身可视区域时触发,mouseover会冒泡且只要进入元素或其任意子元素的盒模型范围(content+padding+border)即触发。
-
HTML函数不受CPU超频影响,其执行速度由浏览器引擎、事件循环和网络栈决定;超频仅提升WebWorkers中计算密集型任务性能,却可能降低计时精度并暴露竞态问题。
-
gap比margin更可靠,因其是布局层原生间隔控制,不参与盒模型计算,不触发重排、不影响justify-content对齐;而margin模拟易在动态增删或响应式时出错,且无法实现容器边缘留白。
-
按钮没响应需分四步排查:①确认事件是否成功绑定,检查DOM加载时机和选择器正确性;②排除默认行为干扰,如href="#"跳转或preventDefault误用;③检查CSS遮挡,如pointer-events:none或父层溢出裁剪;④事件委托时注意target与currentTarget区别,优先用closest()匹配。
-
transition可实现CSS样式平滑过渡,通过property、duration、timing-function和delay四个子属性控制动画效果,常用于鼠标悬停等交互场景。
-
JavaScript国际化通过IntlAPI实现格式化,并结合语言包或i18next等库管理多语言文本,支持动态加载与用户偏好识别,提升用户体验。
-
JavaScript通过原型链实现继承,每个对象的[[Prototype]]指向其原型,形成查找链。构造函数的prototype属性作为实例的原型,实例通过__proto__访问。属性查找先自身后原型链,修改仅影响当前对象。常见继承方式有原型链继承、构造函数借用、组合继承及寄生组合式继承,其中组合继承最常用,寄生组合式更优。ES6class语法简化操作,但底层仍基于原型链,理解其原理对掌握JavaScript对象模型至关重要。