面试题答案
一键面试JavaScript闭包概念
闭包是指有权访问另一个函数作用域中变量的函数。当一个函数内部定义了另一个函数,且内部函数可以访问外部函数的变量时,就形成了闭包。闭包使得函数可以“记住”它定义时的环境,即使外部函数已经执行完毕,内部函数仍然可以访问和操作外部函数作用域中的变量。
闭包实现计数器示例
function counter() {
let count = 0;
return function() {
return ++count;
};
}
let myCounter = counter();
console.log(myCounter()); // 输出1
console.log(myCounter()); // 输出2
console.log(myCounter()); // 输出3
在上述代码中,counter
函数返回一个内部函数。这个内部函数可以访问并修改 counter
函数作用域中的 count
变量。每次调用返回的内部函数,count
变量都会增加并返回新的值,实现了一个简单的计数器状态管理。这里的内部函数就是闭包,它记住了 counter
函数执行时的环境,包括 count
变量,使得 count
变量的值在多次调用之间得以保留。