第五章.闭包 (5.Closing in on closures)[完成]
这章写得极为精彩,让我明白了好多以前根本不知道的概念。
闭包是一个神奇的东西,新果说过,闭包就是可以当作鞭子来用,可以打出鞭子头一样的力道。
所谓的函数化这个概念中,闭包是一个很重要并且很精髓的概念。
想要理解函数化编程,就要深刻的理解闭包。
本章重点:
1.闭包的定义,闭包是什么,闭包如何工作
2.利用闭包来实现一些简单的开发
3.利用闭包实现性能上的增强
4.利用闭包实现私有域
5.1 闭包如何工作(How closures work)
问:闭包是什么?
答:简单来说,closure是一块域,这块域是由创建一个function而来,这个function可以访问和操作它的外部的变量
(Simply put, a closure is the scope created when a function is declared that allows the function to access and manipulate variables that are external to that function.)
这个概念最好还是用代码来解释,所以让我们看看5.1这个例子:
Listing 5.1: A simple closuer
var outerValue = 'ninja';
function outerFunction(){
assert(outerValue == 'ninja', "I can see the ninja")
}
outerFunction();
你可能写过n多次这样的代码,可你竟然没有意识到你在创建闭包(closure)!
你不相信?估计是因为你没有感觉到有任何的惊喜。
因为out value和outer function的作用域是全局域(global scope),而全局域是永远不会消失(自从这个页面被加载就存在了),
另外就算是这个function可以访问outer value,这个特点也没有实用的价值。
所以就算closure已经存在了,它的用处也不明显。
让我们给他加上一点...