要理解闭包的概念,一句话,必须理解语法的上下文概念。
context。
语法分析的时候一个重要的概念就是上下文,
程序运行时的的一个重要概念也是上下文,在v8的引擎里面反复看到的一个类就是context。
闭包,形式上看就是一个函数里面包含另外一个函数,其实,和c++里面的class里面包含method是一回事,你执行class的method的时候,这个method是否要参考class的内容呢?如果要,javascript的闭包里面的function访问包含的它的那个function的变量也就不足为奇了。
本质是什么呢?是context的嵌套,每一个函数都有context,(编译时,运行时),如果要运行一个闭包的function,那么首先要进入闭包它的function(或者class)的context。