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。

要去创建这个函数的作用域取值,而不是“父作用域”。理解了这一点,以上两端代码中,自由变量如何取值应该比较简单。

 

转载于:https://www.cnblogs.com/itadong/p/7079831.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值