JS 闭包

* 闭包是指有权访问另外一个函数作用域中的变量的函数,创建闭包常见方式就是在一个函数内部创建另外一个函数。

* 本质上,闭包就是将函数内部和函数外部连接起来的桥梁。

* 闭包应用场景:设置私有变量和方法,让这些变量的值始终保持在内存中,还有读取内部变量。

* 不适合场景:返回闭包的函数是个非常大的函数

* 闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄漏。


      function fun(){
      	var num=5;
      	function f(){
      		var num=4;
      		console.log(num);
      	}
      	return f;//返回的是函数名f,函数名就代表函数地址、指针
      }
      var f1=fun();//相当于var f1= f   
      f1();//4  相当于f()
      //闭包就是能够读取其他函数内部的函数 f()函数就是一个闭包
      //闭包作用:可以读取函数内部的变量 让这些变量始终保持在内存中
      
      /*function fun(a){
      	function f(a,b){
      		return a+b;
      	}
      	return f;//返回的是函数名f,函数名就代表函数地址、指针
      }
      var f1=fun(4);//相当于var f1= f(a,b)   
      console.log(f1(5,6));//11 相当于f(5,6)
   */
        function fun(a,b){
      	function f(a){
      		return a+b;
      	}
      	return f;//返回的是函数名f,函数名就代表函数地址、指针
      }
      var f1=fun(4,5);//fun内部a=4,b=5  
      console.log(f1(5));//10 f内部的a=5 5+5

      function out(){
      	var num=4;
      	function inner(){
      	  return ++num;
      	}
      	return inner;
      }
      var fun=out();
      console.log(fun());//5
      console.log(fun());//6
      console.log(fun());//7

      var fun1=out();  //相互独立
      console.log(fun1());//5
      console.log(fun1());//6
      console.log(fun1());//7

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值