美文网首页
闭包函数

闭包函数

作者: CHH5431 | 来源:发表于2019-05-09 21:10 被阅读0次

闭包的概念

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);
      }
正确的效果

相关文章

  • 如何理解闭包?

    1、定义: 嵌套在函数作用域中的函数,称为闭包函数。该作用域称为闭包环境。通过闭包函数可以访问闭包函数所在函数作用...

  • 关于逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包当函数执行过程中,执行的函数内部的闭包,...

  • 3.逃逸闭包,非逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包:当函数执行过程中,执行的函数内部的闭包...

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • day14-函数(3)装饰器

    一、闭包函数 闭包函数=函数嵌套定义+函数对象+名称空间与作用域 闭包函数 1、闭:指的是该函数是定义在一个函数内...

  • 面试题(day-2)

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,...

  • JS的闭包

    1.闭包的概念 闭包函数:声明在一个函数中的函数,叫做闭包函数。闭包:内部函数总是可以访问其所在的外部函数中声明的...

  • python函数之闭包

    目录 python函数之闭包什么是闭包python中的namespace闭包的条件闭包的优点 python函数之闭...

  • 2018-07-10swift4与swift 3.3 语法重拾(

    函数与闭包 闭包

  • 闭包和立即执行函数

    闭包闭包:内部的函数引用了外部的函数的变量,则产生闭包。闭包的作用:把变量封装在函数中,只有内部函数可以用,让函数...

网友评论

      本文标题:闭包函数

      本文链接:https://www.haomeiwen.com/subject/gaogoqtx.html