web前端面试系列 一 js闭包

时间:2021-12-01 19:09:16

一、什么是闭包?

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. 影响脚本执行性能。