一、什么是闭包?
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. 影响脚本执行性能。