面试题答案
一键面试闭包的形成
在 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
函数返回一个包含 getName
和 setName
方法的对象。这两个方法形成了闭包,它们可以访问和修改 Person
函数作用域中的 name
变量,而 name
变量对于外部代码来说是私有的,实现了数据封装。