闭包(closure)

本文介绍了JavaScript中的闭包概念,以及它如何用于扩展变量的作用域。通过两个示例展示了闭包在处理事件监听和异步操作(如setTimeout)时的作用,强调了闭包在维护函数内部状态和避免变量污染上的重要性。

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

  • 闭包(closure)指有权访问另一个函数作用域中变量的函数。
  • 一个作用域可以访问另外一个函数的局部变量
  • 闭包的主要作用:延伸了变量的范围

 //1.我们可以利用动态添加属性的方式
      var lis = document.querySelector(".nav").querySelectorAll("li");
      for (var i = 0; i < lis.length; i++) {
        lis[i].index = i;
        lis[i].onclick = function () {
          console.log(this.index);
        };
      }
    //   2.利用闭包的方式得到当前li 的索引号
      for(var i = 0;i<lis.length;i++) {
          (function(i) {
              lis[i].onclick = function() {
                  console.log(i);
              }
          })(i);
      }
      var lis = document.querySelector(".nav").querySelectorAll("li");
 // 3.闭包应用-3秒钟之后,打印所有li元素的内容
      for (var i = 0; i < lis.length; i++) {
        (function (i) {
          setTimeout(function () {
            console.log(lis[i].innerHTML);
          }, 3000);
        })(i);
      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值