js 闭包

闭包就是能够读取其他函数内部变量的函数
1: 通过作用域链读取的
语法作用域。
低级作用域:if else for
高级作用域:function
同级别的作用域可以相互嵌套
高级的作用域,可以嵌套低级的作用域
低级作用域嵌套高级作用域无效

// 1.同级作用域嵌套
      function fn() {
        function fn1() {
          function fn2() {
            function fn3() {}
          }
        }
      }

      // 2.高级作用域嵌套低级作用域
      function fn() {
        if (true) {
        }
      }

      // 3.低级作用域 嵌套 高级作用域 (无效)
      if (true) {
        function fn() {}
      }
//MND链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
      // MDN 认为 函数里面 嵌套函数 不一定是闭包
      // MDN 观点认为:以下是语法作用域效果,不是 闭包
      function foo() {
        var name = 1;
        function fire() {
          console.log(name);
        }
        fire();
        fire();
        fire();
      }
      foo();
      // 所有人都认为,以下一定是闭包
      function foo() {
        var name = 1;
        return function fire() {
          console.log(++name);
        };
      }
      var res = foo();

      // 百度百科 认为 闭包 必须是 可以 访问 函数内部 变量的 函数————> 没有说明是内部函数还是外部函数

      // 百度百科认为是 闭包: 因为 函数 包括内部函数 和外部函数,内部的访问也叫做访问。
      function foo() {
        var age = 1;
        function fire() {
          console.log(age);
        }
        fire();
        fire();
        fire();
      }
      foo();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值