闭包

一、闭包的概念:

阮一峰说:

    我的理解是,闭包就是能够读取其他函数内部变量的函数。由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。


二、闭包的用途:

    闭包可以用在许多地方。它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。


三、闭包的优缺点:

优点:可以读取函数内部的变量。

缺点:变量会始终保持在内存中,占用大量内存。

变量的作用域:

变量的作用域分类:全局变量和局部变量。

特点:

1、函数内部可以读取函数外部的全局变量;在函数外部无法读取函数内的局部变量。

2、函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量。


代码示例:

注:基本类型数据:数字(number)、字符串(string)、布尔(boolean)、null、undefined

       引用类型数据:Object 、Array 、Function 、Data(实际操作的是数据的地址)

1、当内部参数为常量时(基本类型数据)

function f1(){
    var n1=999;
    function f2(){
      alert(n1); 
           return n1;
    }
    return f2;
}
var result1=f1();
result1(); // 999
result1()+1;//结果为1000; 此时n=999

2、当内部参数为引用类型数据时:

function f3(){
   var n2=[111,222];
   function f4(){
      alert(n2);             
           return n2;
    }
    return f4;
}
var result2=f3();//此时相当于函数f4()已经被声明了,可在外部调用f4了已经
result2(); // [111,222]
result2()[0]=333;//现调用result2()返回[333,222]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值