javascript闭包

<p>闭包的概念被弄的玄之又玄,好像还跟函数是编程有点关系,今天一探究竟。</p>

<ul>
<li>什么是javascript闭包?</li>
<li>闭包解决了什么问题?</li>
</ul>


<p>MDN上的<a href="https://developer.mozilla.org/cn/docs/Web/JavaScript/Closures">这篇文章</a>相当精彩的讲解了这个问题。</p>

<p>闭包是一种对象,只是比较特殊。以下是我理解的定义:</p>

<ul>
<li>闭包是一个函数中定义的函数,作为返回值返回。比如,函数a中定义的函数b</li>

<li>函数a中还有变量可以任由函数b来使用,这是很显然的</li>

<li>在函数a之外调用函数b的时候,函数a中的变量对函数b来讲仍然有效</li>

<li>在函数a外面能调用到函数b的是通过将函数b作为函数a的返回值返回做到的</li>

</ul>


function a() {
    var x = 0;
    function b() {
        x++
        console.log(x)
    }
    return b;
}
var c = a();
c();//x=1
c();//x=2
c();//x=3


var d = (function () {
    var x = 0;
    function b() {
        x++
        console.log(x)
    }
    return b;
})()
d();//x=1
d();//x=2
d();//x=3



<p>上述两种形式的闭包,第二种是使用了匿名函数,我刚开始没看仔细匿名函数被小括号括起来而后又执行了,导致没有理解匿名函数,。</p>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zouCode阅读 1,363评论 0 13
  • 前言 这篇文章使用有效的javascript代码向程序员们解释了闭包,大牛和功能型程序员请自行忽略。 基础篇 闭包...
    kiaizi阅读 410评论 0 7
  • 之前看过一些关于闭包的文章,当时对闭包的理解还是不够透彻,前些天又回顾了《JavaScript高级程序设计第三版》...
    Rin阳阅读 1,247评论 1 2
  • 目录 1.执行环境与作用域链 2. 立即执行函数 3. 闭包知识点 3.1 什么是闭包 3.2 使用闭包的意义与注...
    犯迷糊的小羊阅读 702评论 0 11
  • 很多事情不是逃避就可以解决的,生活免不了挫折,也往往会打击我们一阵子,但它就像一条河,只要我们想过,就一定有过得去...
    东方新材粉末彩涂板阅读 171评论 0 0

友情链接更多精彩内容