前端面试之闭包
概念
一个函数对周围状态的引用捆绑再一起,内层函数中访问外层函数的作用域
简单理解:闭包 = 内层函数 + 引用的外层函数变量
通常会再使用一个函数包裹闭包结构,以起到对变量的保护作用
注意点:闭包不一定有 return;闭包不一定有内存泄漏
function outer(){
const a = 1
function f(){
console.log(a)
}
f()
}
outer()
外部如果想要使用闭包变量,则此时需要 return
function outer(){
let a = 1
return function f(){
console.log(a)
}
}
const f() = outer()
f()
作用:实现数据的私有,不被全局污染
例子:函数调用一次,i++
function fn(){
let i = 1
function fun(){
i++;
console.log('函数被调用${i}次')
}
return fun
}
const result = fn()
result() // 2
result() // 3
话题延申:内存泄漏