浅谈JS的闭包

2020-01-17  本文已影响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.可以暂存数据,给变量开辟私密空间,避免外部污染。
缺点就是会增加内存增加代码负担

上一篇 下一篇

猜你喜欢

热点阅读