闭包_2

1.函数的重复调用

  

   

 

   每调用一次都会声明一个新的变量,所以每次都是1+1=2

  js内部所做的事情:函数被调用后,声明一个新的变量,该变量就拥有一个使用计数器,初始使用次数为0,每使用一次加一,函数执行结束之后,计数器会置0 .

  js的垃圾回收机制:当函数被调用执行且结束,变量使用结束,且计数器被置0,那么整个函数环境中的变量都会销毁。

2.如何逃过垃圾回收机制呢?

  函数内部的函数如果没有被调用,那么垃圾回收机制就无法检测,那么这时候就无法销毁变量。

3.作用域链

  当某个变量再自己的环境中没有找到,那么就会再上一层的环境中进行寻找,直到找到为止。

4.闭包函数的调用

  

 

   

   嗯,每次的变量都没有被销毁,f1执行完毕,由于作用域链的存在,垃圾回收机制不敢销毁 未被调用函数 中的变量

  (全局变量只有等所有可执行的代码执行完毕,才会销毁)

 

  由于会有一些变量不销毁,所以闭包太多会大量占用内存空间。

   <over>

 

  

posted @ 2020-03-05 22:31  会挽雕弓如满月的张  阅读(86)  评论(0)    收藏  举报