MST

星途 面试题库

面试题:JavaScript中闭包如何助力状态管理

请阐述JavaScript闭包的概念,并举例说明闭包是怎样在一个简单场景下实现状态管理的,比如模拟一个计数器。
32.5万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

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 变量的值在多次调用之间得以保留。