10分钟快速理解闭包(JavaScript&jQuery&vue)

闭包的概念

闭包就是一个函数,两个函数彼此嵌套,内部函数就是闭包形成闭包条件是内部函数需要通过return给返回出来。 看下面的代码,你就懂了:

function f1() {
  function f2() {
    alert('我是js闭包!')
  }
  return f2
}
var f = f1()
f() //弹出:我是js闭包!

闭包特点

闭包有权利调用其上级环境的变量信息。父级环境的信息已经固化为本身 AO 的成员了。

看下代码,更好理解:

function f1() {
  var bb = '闭包'
  function f2() {
    alert('我是' + bb)
  }
  return f2
}
var f = f1()
f() //弹出:我是js闭包

闭包使用规则

同一个闭包机制可以创建多个闭包函数出来,它们彼此没有联系,都是独立的。

并且每个闭包函数可以保存自己个性化的信息。

看下代码,理解下三个闭包彼此独立、没有联系:

function f1(num) {
  function f2() {
    alert('数字:' + num)
  }
  return f2
}
var fa = f1(10)
var fb = f1(20)
var fc = f1(30)
fa() //数字:10
fb() //数字:20
fc() //数字:30

闭包的使用例子,加深理解闭包

创建数组元素

      var num = new Array();
      for(var i=0; i<4; i++){
          //num[i] = 闭包;//闭包被调用了4次,就会生成4个独立的函数
          //每个函数内部有自己可以访问的个性化(差异)的信息
          num[i] = f1(i);
      }
      function f1(n){
          function f2(){
              alert(n);
          }
          return f2;
      }
      num[2]();  //2
      num[1]();  //1
      num[0]();  //0
      num[3]();  //3


  function foo() {
    var i = 1;
    return function () {
      i++;
      console.log(i);
    }
  }
  var aFn = foo(), bFn = foo();
  aFn(); // 2
  aFn(); // 3
  bFn(); // 2
function funca() {
  y = function () {
    X = 2
  }
  return function () {
    var x = 3
    y()
    console.log(this.x) // 3
  }.apply(this, arguments)
}
funca() //undefined

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值