闭包Closure它的特性

什么是闭包

经常听说闭包是函数嵌套函数,内部函数可以访问外部的函数的变量,且内部函数是外部函数的返回值。让我们来详细的解读这句话。

闭包的概念

如何形成一个闭包那?
我们声明了一个函数或创建一个函数,这时闭包就已经产生了,闭包的概念正确的来说有两个
函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起构成闭包(closure)。也就是说,闭包可以让你从内部函数访问外部函数作用域。在 JavaScript 中,每当函数被创建,就会在函数生成时生成闭包。

一个为函数,一个为状态(变量)
而这个变量又是自由变量
自由变量:既可以是外部的变量,也可以是父级函数的形参(也可以理解为凡是跨了自己的作用域的变量都叫自由变量。
那么但有人问起函数+自由变量=?那就是闭包了

闭包的特点

1,私有成员
2,避免全局变量的污染
3,闭包中的变量会长期存储再内存中

闭包的缺点

1,常驻内存,增加内存使用量。
2,使用不当会很容易造成内存泄露。
(解决泄露,在使用完后将闭包设为null)

闭包使用

1,简单的闭包
	<script>
    var num = 0;
    function closure() {
        var num = 1;
        return (function () {
            console.log(num)
        })() //自调用函数
    }
    closure()
    // 1
	<script/>

为什么采用这个采用子调用,因为内部函数没有调用只做返回值的时候,一开始的时候调用父级函数是无法进入到子级函数的

    var num = 0;
    function closure() {
        var num = 1;
        console.log('外部函数:',num)
      return function () {
            console.log("内部函数:",num)
        }
    }
   closure()
    // 外部函数: 1
   closure()()
  // 内部函数: 1
先简单的分享一下闭包
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值