讲解了 localStorage 的定义、属性及常用方法,包括 setItem、getItem、removeItem 和 clear 的使用方式。介绍了如何存储和读取复杂数据类型,并通过监听 storage 事件实现浏览器标签间通信。强调 localStorage 的使用限制,如同域名限制、低版本浏览器兼容性及移动端潜在问题,并提供跨域通信的解决方案。
对比了 Vue Router 的正常配置与懒加载配置,懒加载通过动态引入组件的方式减少初次加载体积。在执行 npm run build 后,会生成与路由对应的独立 .js 文件,切换路由时按需加载,提升页面加载性能,并适用于解决首屏加载缓慢的问题。
通过示例分析了 JavaScript 中作用域和 this 的取值规则,解释了方法内变量查找优先级及其与 this 的关系。构造函数中变量优先取局部作用域值,若返回 this.name 则取实例属性值;若实例无对应属性,则沿原型链查找,返回原型上的 name 值。
介绍了 for...of 语句可遍历数组、字符串、Set、Map 等可迭代对象,以及与 for...in 的区别。for...of 遍历键值,不会暴露对象的非迭代属性,支持 break、continue 和 return,且能正确识别 32 位 UTF-16 字符。
介绍了 then() 方法为 Promise 添加解决 (fulfillment) 和拒绝 (rejection) 状态回调的功能,其返回一个新的 Promise 实例以支持链式调用。若回调函数返回另一个 Promise 实例,则后续 then() 方法会等待该 Promise 状态改变后再执行,体现异步操作的串联特性。
介绍了 Map 和 WeakMap 的定义、语法、方法及应用场景。Map 支持任意类型的键,提供多种操作和遍历方法;WeakMap 的键必须是对象,且为弱引用,支持垃圾回收机制,适合解决内存泄漏问题,例如在绑定 Dom 对象事件时自动释放内存。
介绍了 Set 数据结构的定义、语法及常用方法,包括 add、delete、has 和 clear,支持存储任意类型的唯一值。通过 Set 可实现数组去重,利用扩展运算符将 Set 转换为数组,简化去重操作并保留原始数据顺序。
介绍了 JavaScript 中递归的基本概念及其内存开销,指出递归调用会因栈空间限制导致溢出错误。同时提到尾递归优化理论上能避免栈溢出,但当前浏览器尚未完全支持尾递归优化,因此在实际使用中仍需注意性能问题。
介绍了 JavaScript 中指数运算符 (**) 和 Math.pow() 方法的用法与区别。指数运算符直接进行幂运算,支持赋值操作;Math.pow() 方法通过函数调用实现幂运算,语法更传统。两者均支持字符串类型转换为数值进行计算,示例展示了实际应用场景。
介绍了 JavaScript 中四种处理数字的小数部分的方法:Math.trunc() 去除小数保留整数,Math.round() 四舍五入,Math.ceil() 向上取整,Math.floor() 向下取整。每种方法均支持字符串和布尔值转换,返回结果可能为整数或 NaN,示例展示了不同输入下的具体行为。