function doSomething () { const a = 10; const b = 11; const add = function (a + b) { return a + b } add (a + b) } 在现实的应用场景中,doSomething 可能需要做很多很多的事情,add 函数可能也更为复杂,并且可以复用,那么我们希望可以将 add 函数独立到一个单独的文件中,于是:
// doSomething.js 文件 const add = require('add.js'); const a = 10; const b = 11; add(a+ b); // add.js 文件 function add (a, b) { return a + b; } module.exports = add; 这样做的目的显而易见,更好的组织项目代码,注意到两个文件中的 require 和 module.exports,从现在的上帝视角来看,这出自 CommonJS 规范(后文会有一个章节来专门讲规范)中的关键字,分别代表导入和导出,抛开规范而言,这其实是我们模块化之路上需要解决的问题。另外,虽然 add 模块需要得到复用,但是我们并不希望在引入 add 的时候造成全局污染