前端闭包是指一个函数和属于这个函数的引用环境捆绑在一起构成的整体。简单说,闭包就是将函数内部和函数外部的变量绑在一起的函数。
理解闭包的关键在于理解范围链。JavaScript 中的每个函数在定义的时候都会构建一条范围链,范围链由当前函数的所有外部变量构成。这条范围链允许函数在定义的作用域之外的地方访问这些变量。
当一个函数返回时,它的范围链也和它一起返回。这条作用域链里封闭的所有外部变量我们称之为闭包。所以,闭包最重要的特征就是它可以记住创建它时的环境。
举个例子:
function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
console.log(add5(2)); // Prints 7
console.log(add10(2)); // Prints 12
这里add5和add10是闭包。它们共享同一个函数定义,但是保存了不同的词法环境。在add5的环境中,x是5,而在add10的环境中,x是10。
所以理解闭包的关键是:
1. 理解作用域链和词法环境的概念
2. 闭包是一个函数和其环境的组合
3. 闭包允许函数记住并访问创建它的环境
4. 闭包可以用来封装变量
顶一下
(0)
0%
踩一下
(0)
0%
- 相关评论
- 我要评论
-