深入理解javascript原型和闭包(15)——闭包 - youngperson/study-100 GitHub Wiki

至于“闭包”这个词的概念的文字描述,确实不好解释,我看过很多遍,但是现在还是记不住。 但是你只需要知道应用的两种情况即可——函数作为返回值,函数作为参数传递。

函数作为返回值

function fn() {
   var max = 10;

   return function bar(x) {
	   if(x > max) {
		  console.log(x);
	   }
   }  
}

var f1 = fn();
f1(15);

函数作为参数传递

var max = 10,
fn = function(x) {
	   if(x > max) {
		  console.log(x);
	   }
};

(function (f){

	var max = 100;
	f(15);

})(fn);

要去创建这个函数的作用域取值,而不是“父作用域”