面试题答案
一键面试基本思路
- 立即执行函数(IIFE)封装:在浏览器中,没有像Node.js那样原生的模块系统。可以通过立即执行函数来模拟模块的私有作用域,每个模块通过一个IIFE来包裹,防止变量污染全局作用域。
- 依赖管理:通过在IIFE内部定义依赖,就像Node.js模块中引入其他模块一样。可以将依赖作为参数传递给IIFE。
- 导出接口:通过将需要暴露的函数或变量挂载到
window
对象(在浏览器环境下)或者其他全局对象上,来实现类似Node.js模块的导出功能。
示例
- 定义模块:
- 创建一个
addModule.js
文件,定义加法函数模块:
<script> (function (window) { function add(a, b) { return a + b; } // 导出add函数 window.addModule = { add: add }; })(window); </script>
- 创建一个
- 使用模块:
- 在HTML页面中引入上述模块并使用:
<!DOCTYPE html> <html> <head> <meta charset="UTF - 8"> <title>模拟Node模块</title> </head> <body> <script src="addModule.js"></script> <script> var result = addModule.add(2, 3); console.log('加法结果:', result); </script> </body> </html>
在上述示例中,addModule.js
通过IIFE创建了一个模拟的模块,将add
函数挂载到window.addModule
对象上进行导出。在HTML页面中先引入addModule.js
,然后就可以使用addModule.add
函数来执行加法操作。