JS之闭包

首先要理解变量的作用域,无非就是两种:全局变量和局部变量。

在函数内可以访问到函数外部的变量,但在函数外部访问不了函数内部的变量

var n=1;

  function f1(){
    console.log(n);
  }

  f1(); // 输出1,在函数内可以访问到函数外部的变量
 function f1(){
    var n=1;
  }

  console.log(n); // 输出error,在函数外部访问不了函数内部的变量

那么在函数外部怎么才能访问得到函数内部的变量呢,这个时候我们只要在f1中加一个函数f2

function f1(){
    var n=1;
    function f2(){
    console.log(n)
  }
  }

这时候f2就可以访问到f1里面的变量了,因为f1的变量n对于f2来说是在f2的外部,可以被f2访问到。
但这时候还不能在f1外面访问到n,还需要将f2返回

function f1(){
    var n=1;
    function f2(){
    console.log(n)
  }
  return f2;
  }

这个时候就可以在f1外部,调用f2,从而访问到f1内的局部变量

   var n=1;
    function f2(){
    console.log(n)
  }//这样就形成了一个闭包,闭包就是能够读取其他函数内部变量的函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值