美文网首页
浅谈JS的闭包

浅谈JS的闭包

作者: 明人不放按屁 | 来源:发表于2020-01-17 17:39 被阅读0次

    今天写代码的时候碰到一个修改需求,有一列数据,可以删除,点击某条数据删除的时候会弹出自定义的模态确认框,并且带出该数据的id。


    1.png 2.png

    我在项目中使用的方法是:写两个函数,并且在对象里面添加一个ID为空;点击“删除“的时候,执行第一个函数,弹出模态框,并将带出的该数据的id存进之前在对象里面的空ID;弹出模态框之后,点击“确认删除”时,执行第二个函数,并且执行删除的接口,将删除接口需要的id等于之前存进的ID,即可以实现删除。
    之后我又写了一种方法,js的闭包(感觉使用的闭包方法,但并不确定是不是闭包方法),函数套函数。

    <body>
        <button onclick="btn(1111)">点击出来</button>
        <button id="del" style="display: none;">删除</button>
        <script>
            let Del = document.getElementById('del')
    
            function btn(a) {
                del.style.display = "block"
                console.log('我是父函数' + a)
                Del.onclick = function() {
                    console.log('我是子函数' + a)
                }
            }
        </script>
    </body>
    

    这种方法不需要存储id,只需要在函数内部再套用一个函数,并且执行的时候将数据带进去

    闭包定义

    闭包是在另一个函数(称为父函数)中定义的函数,并且可以访问在父函数作用域中声明和定义的变量。
    闭包可以访问3个作用域中的变量
      1、在自己作用域中声明的变量
      2、在父函数中声明的变量
      3、在全局作用域中声明的变量
    最简单的闭包例子

      function f1(){
        n=999;
        function f2(){
          console.log(n);
        }
        return f2;
      }
      var result=f1();
      result(); // 999
    

    闭包的作用

    1.可以间接调用函数内部的局部变量。
    2.可以让这些变量的值始终保持在内存中。(因此要注意不能滥用闭包)
    3.可以暂存数据,给变量开辟私密空间,避免外部污染。
    缺点就是会增加内存增加代码负担

    相关文章

      网友评论

          本文标题:浅谈JS的闭包

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