1. 闭包

闭包的概念

闭包是能够读取其他函数内部变量的函数。在Javascript中,只有函数内部的子函数能够读取局部变量,因此可以将闭包简单的理解为“定义在一个函数中的函数”。(其实也就是一个内部函数)


闭包的应用

闭包的应用主要有两种情况:

  • 函数作为返回值 —— 读取函数内部变量。
function closure() {
 var innerVar = 0;

 function inner() {
   return ++innerVar;
 }
 return inner;
}
  • 函数作为参数传递
    延迟调用:作为setTimeout的参数在指定的时间被调用。
setTimeout(function () {
      echo(pclosure1, outer);
  }, 10);

定制计算方式:

Array.prototype.map([1, 2, 3], function(num){ 
            return num * 3; 
        });

闭包还可以封装成一个自执行函数。

闭包的特点
  • 一般情况下,函数在调用时就会生成执行上下文环境,函数执行结束后便销毁执行上下文环境及销毁变量,释放内存。
  • 闭包是一种能够调用其他函数变量的函数,含有闭包的函数在执行结束后,上下文环境及变量没有被销毁(这样,闭包才能引用函数中的变量),变量存在内存中直到闭包执行结束为止。(垃圾收集机制)

可见,闭包会消耗内存、增大内存开销,同时可能造成内存泄漏,不宜大量使用。

Copyright © eamiear all right reserved,powered by Gitbook该文件修订时间: 2019-06-17 16:18:09

results matching ""

    No results matching ""