首页 > 代码库 > js 之 闭包
js 之 闭包
什么是闭包;闭包的作用是什么;这个说在看书面意思的时候一直看的我很头大;面试的时候也老是问;
但是你只需要知道应用的两种情况即可——函数作为返回值,函数作为参数传递。
一、函数作为返回值
function fn(){
var max=20;
return function bar(x){
if(x>max){
console.log(x);}
}
}
var f1=fn();
f1(21);
如上代码,bar函数作为返回值,赋值给f1变量。执行f1(21)时,用到了fn作用域下的max变量的值。
第二,函数作为参数被传递
var max=10,
fn=function(x){
if(x>max){
console.log(x);
}
};
(function(){
var max=100;
fn(15);
})(fn)
如上代码中,fn函数作为一个参数被传递进入另一个函数,赋值给f参数。执行f(15)时,max变量的取值是10,而不是100。
要去创建这个函数的作用域取值,而不是“父作用域”。理解了这一点,以上两端代码中,自由变量如何取值应该比较简单。
js 之 闭包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。