在js中闭包就是在嵌套函数中,内层函数访问外部函数作用域内的变量和参数,造成的闭包空间,有助于函数不受外界干扰,实现封装,避免命名冲突,如果操作不当容易造成内存泄露,闭包并不是一种属性或者函数,是一种现象,在项目中我们容易遇到闭包的地方就是防抖和封装公共函数的时候
下面是一个简单的防抖的函数
<script>
const input = document.querySelector('input')
input.addEventListener('input',(e)=>{
let timerId = ''
clearTimeout(timerId)
timerId = setTimeout(()=>{
console.log(e.target.value)
},900)
})
</script>
在项目中,我封装了一个公共函数,这个公共函数需要在两个页面使用,功能一样,只是传的参数不同,这个公共函数需要返回一个功能函数,这个功能函数使用了外部函数的变量和参数,就造成了闭包