function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
var add10 = makeAdder(10);
console.log(add5(2)); // 7
console.log(add10(2)); // 12
这是闭包的典型例子,但我不知道怎么去理解闭包。谁能给我讲讲??
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这是一个典型的 curry function。
我一直认为知乎上这个回答描述得非常好,而且很好理解,可以参考一下:
https://www.zhihu.com/questio...
这是闭包的典型例子,闭包按照这个例子说只是bar函数能够访问foo函数里的x变量。
https://segmentfault.com/q/10...
闭包有两个比较明显的特点:
官方的解释是:闭包是一个拥有
许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包就是由函数创造的一个词法作用域,里面创建的变量被引用后,可以在这个词法环境之外自由使用。
闭包通常用来创建内部变量,使得这些变量不能被外部随意修改,同时又可以通过指定的函数接口来操作。
来张图:
JS闭包