js高级程序设计第四版

第四章

4.2.2 变量声明

  1. var 是函数作用域声明, let、const 是块级作用域声明
  2. let 同一作用域内不能声明两次,var 重复的会被忽略覆盖
  3. let 适合在循环中声明迭代变量,使用 var 声明的迭代变量会泄漏到循环外部
  4. const 被赋值为对象,应用值不能修改,但对象的键则不受限制,如果想整个对象都不能修改,可以使用 Object.freeze()

4.3 垃圾回收

js 最常用的垃圾回收策略是标记清理

内存泄漏

js 中的内存泄漏大部分是由不合理的引用导致的. 解除变量引用不仅可以消除循环引用,而且对垃圾回收也有帮助

  1. 意外声明全局变量
  2. 定时器的回调通过闭包引用外部变量
  3. 闭包