javascript闭包

来源:互联网 发布:通达信画线源码 编辑:程序博客网 时间:2024/05/29 08:09

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


  • 什么是javascript闭包?

  • 闭包解决了什么问题?

<hr>

MDN上的这篇文章相当精彩的讲解了这个问题。

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


  • 闭包是一个函数中定义的函数,作为返回值返回。比如,函数a中定义的函数b

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

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

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

<hr>

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

<hr>

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

<hr>

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

0 0
原创粉丝点击