MST

星途 面试题库

面试题:JavaScript 中闭包是如何形成的及简单应用场景

请解释 JavaScript 闭包是怎样形成的,并举例说明一个常见的闭包应用场景,比如实现数据封装。
38.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

闭包的形成

在 JavaScript 中,当一个函数内部定义了另一个函数,并且内部函数可以访问外部函数作用域中的变量时,闭包就形成了。即使外部函数执行完毕,其作用域也不会被销毁,因为内部函数依然持有对外部函数作用域的引用。

常见闭包应用场景 - 数据封装

function Person() {
    let name = 'John'; // 私有变量

    function getName() {
        return name;
    }

    function setName(newName) {
        name = newName;
    }

    return {
        getName: getName,
        setName: setName
    };
}

const person = Person();
console.log(person.getName()); // 输出: John
person.setName('Jane');
console.log(person.getName()); // 输出: Jane

在上述例子中,Person 函数返回一个包含 getNamesetName 方法的对象。这两个方法形成了闭包,它们可以访问和修改 Person 函数作用域中的 name 变量,而 name 变量对于外部代码来说是私有的,实现了数据封装。