面试题答案
一键面试闭包概念
闭包是指在 JavaScript 中,一个函数可以访问并记住其外部作用域中的变量,即使外部函数已经执行完毕并返回,这些变量也不会被垃圾回收机制回收。简单来说,闭包就是函数和其周围状态(词法环境)的组合。
闭包示例
function outerFunction() {
let outerVariable = 10; // 外部函数作用域中的变量
function innerFunction() {
outerVariable++; // 修改外部函数作用域中的变量
return outerVariable;
}
return innerFunction;
}
let closure = outerFunction();
console.log(closure()); // 输出 11
console.log(closure()); // 输出 12
在上述示例中,outerFunction
返回了 innerFunction
,innerFunction
形成了闭包。它可以访问并修改 outerFunction
作用域中的 outerVariable
。每次调用 closure
(即 innerFunction
)时,outerVariable
都会自增并返回新的值,这表明闭包记住并能操作外部函数作用域中的变量。