关于javascript中闭包的理解

/*闭包就是能够读取其他函数内部变量的函数, 在js中也可以简单地理解成定义在一个函数内部的函数。
在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。
闭包的最大用处有两个,一个是读取函数内部的变量,另一个是让这些变量的值始终保持在内存中*/



/*function a(){
var n=0;
function inc(){
n++;
console.log(n);
}
inc();
inc();
}
a();*/

/*function a(){
var n=0;
this.inc = function(){
n++;
console.log(n);
};
}

var c = new a();
c.inc();
c.inc();*/

function a(){
var n = 0;
function inc(){
n++;
console. log( n);
}
return inc;
}
var c = a();
c();
c()




/************************************************************/


function create_counter( initial) {
var x = initial || 0;
return {
inc: function () {
x += 1;
return console. log( x);
}
}
}
// var c1 = create_counter();
create_counter. inc(); // 1
create_counter. inc(); // 2
create_counter. inc(); // 3

var c2 = create_counter( 10);
c2. inc(); // 11
c2. inc(); // 12
c2. inc(); // 13



/****************************************************/



'use strict';
// 定义数字0
var zero = function( f){
     return function( x){
         return x;
    }
};

// 定义数字1;
var one= function( f){
     return function( x){
         return f( x);
    }
};

// 定义加法;
function add( n, m){
     return function( f){
         return function( x){
             return m( f)( n( f)( x));
        }
    }
}

console. log( add( one, one));


/***********************************/
最后用‘斐波那契数列’来帮助理解闭包原理

function fib( max){
     var t, a= 0, b= 1, arr=[ 0, 1];
     while( arr. length< max){
         t= a+ b;
         a= b;
         b= t;
         arr. push( t);
    }
     return arr;
}
console. log( fib( 5));
console. log( fib( 10));


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值