面试题答案
一键面试在JavaScript中,可以通过立即调用函数表达式(IIFE)来创建一个函数作用域作为命名空间,从而封装模块并避免全局变量污染。以下是实现包含加法和减法的数学模块的示例代码:
// 创建一个立即调用函数表达式(IIFE),返回一个包含公开方法的对象
const mathModule = (function () {
// 私有变量,外部无法直接访问
let privateValue = 0;
// 加法函数
function add(a, b) {
return a + b;
}
// 减法函数
function subtract(a, b) {
return a - b;
}
// 返回公开接口
return {
add: add,
subtract: subtract
};
})();
// 外部通过公开接口调用模块内的方法
console.log(mathModule.add(5, 3)); // 输出 8
console.log(mathModule.subtract(5, 3)); // 输出 2
在上述代码中:
- 通过
(function () { /*... */ })()
创建了一个IIFE,它会立即执行,并且其内部作用域不会污染全局作用域。 - 在IIFE内部定义了
privateValue
、add
和subtract
,privateValue
作为私有变量,外部无法直接访问。 - IIFE返回一个对象,该对象包含
add
和subtract
两个公开方法,外部通过mathModule
对象来访问这些公开方法。