JavaScript闭包作用域变量问题

本文深入探讨JavaScript中闭包的概念及其如何形成作用域链,通过实例展示闭包如何影响函数行为及变量作用域,理解JavaScript作用域机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 <script>
      function func() {
          // 创建了一个数组
          var fns = new Array();
          // i这个变量是保存在func这个作用域中的
          for (var i = 0; i < 10; i++) {
              // 数组中放的值是一组函数
              fns[i] = function() {
                  return i;
              }
          }
          return fns;
      }
      var fs = func();
      for (var j = 0; j < fs.length; j++) {
          // 此时通过闭包来调用所有函数,当输出i的时候会去上一级的作用域中查找
          // 这个时候i的值已经是10了,所以连续输出10个10
          document.write(fs[j]() + "<br>");
      }
    </script>

在js中当进行函数的调用,会为每一个函数增加一个属性SCOPE,通过这个属性来指向一块内存

这块内存中包含有所有的上下文使用的变量,当在某个函数中调用了新函数之后,新函数依然会有

一个作用域来执行原有的函数的SCOPE和自己新增加的SCOPE,这样就形成了一个链式结构。

这就是js中的作用域链。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值