闭包函数

闭包的概念

1、如何产生闭包?

当一个嵌套的内部子函数引用了嵌套的外部父函数的变量(函数)时,就产生了闭包。

2、闭包到底是什么?

3、产生闭包的条件是什么?

函数嵌套,内部函数引用了外部函数的数据(变量/函数)

业务需求:

点击按钮,显示点击的是第几个按钮。


错误的效果

代码如下:

      // 需求:点击按钮,显示按钮顺序
      var btns = document.getElementsByClassName("btn");
      for (var i = 0; i < btns.length; i++) {
        var btn = btns[i];
        btn.onclick = function() {
          alert("点击第" + (i + 1) + "个按钮");
        };
      }

问题分析:

我们不难发现,对于你输出的结果都是以 i=4 输出的,并不是我们想要的结果。


问题解决:

遇见这种情况,我们可以使用闭包函数来解决。我们使用一个新的函数将外部的变量传给内部的函数即可。代码修改如下:

      var btns = document.getElementsByClassName("btn");
      for (var i = 0; i < btns.length; i++) {
        var btn = btns[i];
          (function(k) {
              btn.onclick = function() {
                alert("点击第" + (k + 1) + "个按钮");
              };
            })(i);
      }
正确的效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容