资讯专栏INFORMATION COLUMN

什么是闭包

canger / 651人阅读

大家好:
今天我们来彻底了解下什么是闭包:
首先我们先看一个例子:

var local =1;
function a(){
    console.log(local);
};

首先我来给大家介绍下:
假设下如果上述代码在一个立即执行的函数中;那么变量local就是一个局部变量,有一个函数a,a可以访问到局部变量local;
好了上述这个就是个闭包;
在网上有许多介绍闭包的概念,如函数中嵌套一个函数,然后将嵌套的函数返回出来,那么我们在来看看下面这个例子;

function aa(){
    var b =1;
    function bb(){
        b++;
        return b
    }
    return bb;
}
var c = aa();
c();

这里变量b和函数bb()就形成了一个闭包;
那么就有了个疑问,为什么要做这种函数嵌套函数;
因为我们需要这个局部变量 b;所以才将 b放在一个函数中,如果不将变量放在一个函数中,那么 b 就成为了一个全局变量;所以说函数嵌套函数就是为了创建一个局部变量。
那为什么要返回bb函数呢
如果大家不返回bb函数,那么我们就用不了这个闭包,返回bb函数的意思就是说返回到window这个全局对象中(不理解看下面);
我们可以把return bb 改写成window.bb = bb ;目的是只要让外层能访问到bb函数就可以了;
所以说 return bb 只是能让这个函数能用,和闭包没关系;
闭包的谣言
闭包会造成内存泄漏?
首先我给大家解释下什么是内存泄漏:你用不到(访问不到的变量),依旧占据着内存空间,不能被再次利用;
这种说法的由来是IE有bug,IE 在我们使用完闭包之后,依然回收不了闭包里面引用的变量。
这是 IE 的问题,不是闭包的问题。

好,今日总结就这么多了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86822.html

相关文章

  • JS 中的闭包什么

    摘要:大名鼎鼎的闭包面试必问。闭包的作用是什么。看到闭包在哪了吗闭包到底是什么五年前,我也被这个问题困扰,于是去搜了并总结下来。关于闭包的谣言闭包会造成内存泄露错。闭包里面的变量明明就是我们需要的变量,凭什么说是内存泄露这个谣言是如何来的因为。 本文为饥人谷讲师方方原创文章,首发于 前端学习指南。 大名鼎鼎的闭包!面试必问。请用自己的话简述 什么是「闭包」。 「闭包」的作用是什么。 首先...

    Enlightenment 评论0 收藏0
  • 什么闭包?为什么闭包?使用闭包应注意什么

    摘要:一什么是闭包闭包是指有权访问另一个函数作用域中的变量的函数。就是创建了一个匿名函数调用函数解除对匿名函数的引用,以便释放内存 一、什么是闭包? 闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式就是在一个函数内部创建另一个函数。 二、为什么要闭包 说明:变量分为全局变量的局部变量,全局变量的作用域为全局作用域,局部变量作用域为局部作用域。之前一篇文章关于作用域链给了介绍...

    raledong 评论0 收藏0
  • 面试官问我:什么JavaScript闭包,我该如何回答

    摘要:到底什么是闭包这个问题在面试是时候经常都会被问,很多小白一听就懵逼了,不知道如何回答好。上面这么说闭包是一种特殊的对象。闭包的注意事项通常,函数的作用域及其所有变量都会在函数执行结束后被销毁。从而使用闭包模块化代码,减少全局变量的污染。 闭包,有人说它是一种设计理念,有人说所有的函数都是闭包。到底什么是闭包?这个问题在面试是时候经常都会被问,很多小白一听就懵逼了,不知道如何回答好。这个...

    BenCHou 评论0 收藏0
  • 多层级理解闭包

    摘要:第二梯队理解有了第一梯队的认识,我们慢慢修正大脑中对闭包的认识。理解这句话就可以很好的与闭包这两个字关联起来理解闭包这个概念了。总结第二梯队理解闭包是一个有特定功能的函数。第四梯队理解闭包通过访问外部变量,一个闭包可以维持这些变量。 闭包 闭包的概念困惑了我很久,记得当时我面试的时候最后一面有一个问题就是问题关于闭包的问题,然而到现在已经完全不记得当时的题目是啥了,但仍然能够回忆起当时...

    nemo 评论0 收藏0
  • The Little JavaScript Closures

    摘要:写在前面本文尝试模仿的风格,介绍的闭包。本文同时也是我学习闭包的一次总结。注根据这篇文章,事实上所有函数在创建的时候都会形成闭包。但这种闭包并没什么趣味,也没什么特别的用途,所以我们更关注的是由内部函数形成的闭包。 写在前面 本文尝试模仿 The Little Schema 的风格,介绍 JavaScript 的闭包。本文同时也是我学习 JavaScript 闭包的一次总结。欢迎一起讨...

    Heier 评论0 收藏0
  • 什么闭包闭包的优缺点?

    摘要:什么是闭包闭包的优缺点闭包是的一大难点,也是它的特色。闭包的用途闭包可以用在许多地方。闭包会在父函数外部,改变父函数内部变量的值。 什么是闭包?闭包的优缺点? 闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。 1、变量作用域 要理解闭包,首先要理解javascript的特殊的变量作用域。变量的作用域无非就两种:全局变量和局部变量。...

    fireflow 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<