# ES5模块化—立即执行函数封装

可以利用立即执行函数解决全局变量命名重复模块化问题

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script src="./js/a.js"></script>
    <script src="./js/b.js"></script>
  </body>
</html>
// js/a.js
var ModuleA = (function () {
  var name = "aaa";
  var flag = true;
  var sum = function (num1, num2) {
    return num1 + num2;
  };

  var obj = {};
  obj.name = name;
  obj.flag = flag;
  obj.sum = sum;

  return obj;
})();
// js/b.js
var ModuleB = (function () {
  var name = "bbb";
  console.log(ModuleA.name);
  console.log(ModuleA.flag);
  console.log(ModuleA.sum(1, 2));

  console.log("bbbbbb comoe on");

  var obj = {};
  obj.name = name;

  return obj;
})();

上述就是模块化的最基础封装