小红书第四版读书笔记-变量,作用域与内存

JavaScript常见的内存泄露:

1.意外声明全局变量:

eg: 

  function setName() {

    name = 'Jake';

  }

解释器会把变量name当作window的属性来创建(相当于window.name = 'Jake'),在Window对象上创建的属性,只要window本身不被清理就不会消失。只需要在变量声明前头加上var、let或const即可

2. 定时器:

eg: 

  let name = 'Jake';

    setInterval(() => {

      console.log(name);

    },1000);

  )

只要定时器一直运行,回调函数中引用的name就会一直占用内存

3.使用JavaScript闭包:

eg:  

  let outer = function(){

    let name = 'Jake';

    return function(){

      return name;

    };

  };

以上代码创建了一个内部闭包,只要Outer函数存在就不能清理name,因为闭包一直在引用着它

原文地址:https://www.cnblogs.com/jianzhenghui/p/14599220.html