闭包

2020-09-11  本文已影响0人  酒暖花深Q

闭包是作用域应用的特殊情况 它有两种变现

1 . 函数作为返回值被返回

 function create()  {
         const a = 100;
         return function(){
         console.log(a)
      }
 }
const fn = create();
const a = 200;
fn(); //100

2 . 函数作为参数被传递

  function print(fn) {
    const a = 200;
    fn()
 }
const a = 100;
 function fn(){
   console.log(a)
 }
 print(fn) //100
总结:所有自由变量的查找是在函数定义的地方向上一级作用域查找 ,而不是在调用的地方。

tips: 闭包会引起内存泄漏,所以再函数结束前应该将其赋值为null

上一篇 下一篇

猜你喜欢

热点阅读