面试题答案
一键面试1. 闭包在模块模式中的使用
在 JavaScript 中,模块模式利用闭包来模拟私有变量和方法。模块模式通过一个立即执行函数表达式(IIFE)来创建一个封闭的作用域。在这个作用域内定义的变量和函数,外部无法直接访问,形成了数据封装。闭包则使得在 IIFE 内部返回的公开函数能够访问并操作 IIFE 内部的私有变量和函数。
2. 数据封装和私有变量原理及示例
// 模块模式示例
const myModule = (function () {
// 私有变量
let privateVariable = 10;
// 私有函数
function privateFunction() {
console.log('This is a private function');
}
return {
// 公开方法,可以访问私有变量和函数
publicMethod: function () {
privateFunction();
privateVariable++;
return privateVariable;
}
};
})();
// 尝试访问私有变量,这会失败,因为外部无法直接访问
// console.log(myModule.privateVariable);
// 调用公开方法
console.log(myModule.publicMethod());
在上述代码中,privateVariable
和 privateFunction
是在 IIFE 内部定义的,外部无法直接访问,实现了数据封装。publicMethod
是公开的函数,它利用闭包可以访问和操作 privateVariable
和 privateFunction
。这就是通过闭包在模块模式中实现数据封装和私有变量的原理。