web前端面试系列 一 js闭包

一、什么是闭包?

    JavaScript高级程序设计第三版: 闭包是指有权访问另一个函数作用域中的变量的函数。

    在js中定义在函数内部的子函数能够访问外部函数定义的变量,因此js内部函数就是一个闭包。

二、闭包的组成?

    闭包由函数以及创建该函数的环境(创建该函数时所在作用域任何局部变量)所组成。

三、 闭包的作用是什么?

  1. 允许函数与其操作的一些数据进行关联。(偏函数应用,函数柯里化)

      2. 模拟私有方法。(模块模式)

 1 var Counter = (function() {
 2   var privateCounter = 0;
 3   function changeBy(val) {
 4     privateCounter += val;
 5   }
 6   return {
 7     increment: function() {
 8       changeBy(1);
 9     },
10     decrement: function() {
11       changeBy(-1);
12     },
13     value: function() {
14       return privateCounter;
15     }
16   }   
17 })();

三、闭包的缺陷是什么?

1. 影响脚本执行性能。

原文地址:https://www.cnblogs.com/xiaodi-js/p/5915885.html