【js】闭包问题

        在js中,有时我们需要调用一个函数的局部变量,此时就会产生闭包。闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
        但使用闭包时要注意,闭包的值 ,会存在内存里面,大量使用闭包会导致内存的泄露,所以,一般不使用闭包,在做js版本库的封装的时候会用到。
        下面来展现一下闭包的基本样式:

        f1();
         function f1(){

         n = 999;

         function f2(){

         console.log(n);  //999

         }

         }

        下面来列举几个典型的闭包练习题:
var sum = function () {
var cache;
if (arguments.length === 1) {
cache = arguments[0];
//如果arguments对象的长度为1,也就是参数只有1个时,将这个参数赋值给cache,暂存
return function (number) {
//返回一个函数,函数里的参数(也就是第二个括号里的参数)与之前第一个括号里的参数相加
return cache + number
}
}
else {
return arguments[0] + arguments[1]
//如果arguments对象的长度不为1,那么两个参数相加
}
}
console.log(sum(2, 53));                   //5
console.log(sum(2)(3));                  //5
注:arguments 是当前函数的参数列表 类似于数组的集合 使用索引值来取
上题分解思路来写:
var f1=function (){
var a;
console.log(arguments.length);//函数参数列表的长度
if(arguments.length===1)//参数列表的长度为1 进if
{
a=arguments[0];
function f2(number){
return a+number;
}
return f2;
}
else{
var b=arguments[0]+arguments[1];
return b;
}
}
f1(2,3);

// f1(2)(3)== f2;  f1(2)(3)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值