20151029 闭包
闭包Closure
执行环境的类型总共只有两种:全局和局部(函数).
什么是闭包?
闭包是指有权访问另一个函数作用域中的变量的函数.
延长作用域; 可减少变变量污染.
一. 函数作为返回值
function fn() {
var max = 10;
return function bar(x) {
if(x > max) {
console.log(x);
}
}
}
var f1 = fn();
f1(15);
示例说明:
局部变量在函数执行完成之后未被销毁
二. 函数作为参数被传递
var max = 10;
var fn = function(x) {
if(x > max) {
console.log(x);
}
}
(function f() {
var max = 100;
f(15);
}(fn));
示例说明:
自由变量在函数声名时已经确定了其作用域
案例分析: