闭包 是由做用域链引发的。闭包
var parent = function(){ var a = 'hello'; return function(){ console.log(a); } } var my = parent(); my();//输出'hello',由于返回的函数能够经过做用域链访问a
如上代码:函数
定义parent函数,返回一个匿名函数,并从全局做用域调用这个返回的匿名函数。spa
由于匿名函数被定义在parent函数内部,所以,它被调用后仍然可以访问parent函数的做用域。这就是闭包。code
//另外一个例子 var myfunc = function(arg){ return { myMethod:function(){ return arg; } } } var my = myfunc('hello') my.myMethod(); //返回 hello