一、什么是闭包?
JavaScript高级程序设计第三版: 闭包是指有权访问另一个函数作用域中的变量的函数。
在js中定义在函数内部的子函数能够访问外部函数定义的变量,因此js内部函数就是一个闭包。
二、闭包的组成?
闭包由函数以及创建该函数的环境(创建该函数时所在作用域任何局部变量)所组成。
三、 闭包的作用是什么?
1. 允许函数与其操作的一些数据进行关联。(偏函数应用,函数柯里化)
2. 模拟私有方法。(模块模式)
var Counter = (function() {
var privateCounter = 0;
function changeBy(val) {
privateCounter += val;
}
return {
increment: function() {
changeBy(1);
},
decrement: function() {
changeBy(-1);
},
value: function() {
return privateCounter;
}
}
})();
三、闭包的缺陷是什么?
1. 影响脚本执行性能。