码迷,mamicode.com
首页 > 其他好文 > 详细

理解闭包的含义以及他的使用

时间:2017-07-01 12:44:26      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:++   ret   这一   strong   函数名   bsp   pre   翻译   没有   

1、什么是闭包,
  闭包就是能够读取其它函数内部的变量。

首先我们来看一段代码:
function a(){ var n = 0; function inc() { n++; console.log(n); } inc(); inc(); } a(); //控制台输出1,再输出2

再来看一段代码:
function a(){
    var n = 0;
    this.inc = function () {
        n++; 
        console.log(n);
    };
}
var c = new a();
c.inc();    //控制台输出1
c.inc();    //控制台输出2

这就是闭包,是不是很简单!

这里 inc 函数访问了构造函数 a 里面的变量 n,所以形成了一个闭包。再来看一段代码:

function a(){
    var n = 0;
    function inc(){
       n++; 
console.log(n); } return inc; } var c = a(); c(); //控制台输出1 c(); //控制台输出2

看看是怎么执行的:

var c = couter(),这一句 couter()返回的是函数 inc,那这句等同于 var c = inc; 

c(),这一句等同于 inc();  注意,函数名只是一个标识(指向函数的指针),而()才是执行函数。

后面三句翻译过来就是:  var c = inc;  inc();  inc();,跟第一段代码没有区别。

理解闭包的含义以及他的使用

标签:++   ret   这一   strong   函数名   bsp   pre   翻译   没有   

原文地址:http://www.cnblogs.com/liangxiaoli/p/7101812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!