MST

星途 面试题库

面试题:JavaScript 中闭包的基础概念及简单应用

请解释 JavaScript 闭包的概念,并编写一个简单的闭包示例,说明闭包如何访问和修改外部函数作用域中的变量。
28.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

闭包概念

闭包是指在 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 返回了 innerFunctioninnerFunction 形成了闭包。它可以访问并修改 outerFunction 作用域中的 outerVariable。每次调用 closure(即 innerFunction)时,outerVariable 都会自增并返回新的值,这表明闭包记住并能操作外部函数作用域中的变量。