今天写代码的时候碰到一个修改需求,有一列数据,可以删除,点击某条数据删除的时候会弹出自定义的模态确认框,并且带出该数据的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.可以暂存数据,给变量开辟私密空间,避免外部污染。
缺点就是会增加内存增加代码负担
网友评论