除了属性值可以采用函数,函数的参数、返回值也可以是函数。这种把函数作为参数或返回值带来一个比较纠结的问题————如果用变量把作为返回值的函数保存起来,那么这个函数随时执行应该没问题吧。问题是这个函数作为那个函数的返回值,它可能引用了那个函数里的某些东西。随时调用这个函数也就意味着包裹着它的那个外层函数也必须时时被保存,不能被释放。那这就是闭包了。有点绕嘴,看个例子:
function fout(){
var n=123;
return function fin(){
alert(n); //123
}
}
var f=fout();
f();