code: function globalDefine(id, dependencies, factory) {
          // define(factory)
          // define(dependencies, factory)
          // define(id, factory)
          // define(id, dependencies, factory)
          if (factory == null) {
              if (dependencies == null) {
                  factory = id;
                  id = null;
              }
              else {
                  factory = dependencies;
                  dependencies = null;
                  if (id instanceof Array) {
                      dependencies = id;
                      id = null;
                  }
              }
          }
  
          if (factory == null) {
              return;
          }
  
          var opera = window.opera;
  
          // IE下通过current script的data-require-id获取当前id
          if (
              !id
              && document.attachEvent
              && (!(opera && opera.toString() === '[object Opera]'))
          ) {
              var currentScript = getCurrentScript();
              id = currentScript && currentScript.getAttribute('data-require-id');
          }
  
          if (id) {
              modPreDefine(id, dependencies, factory);
          }
          else {
              // 纪录到共享变量中，在load或readystatechange中处理
              // 标准浏览器下，使用匿名define时，将进入这个分支
              wait4PreDefine[0] = {
                  deps: dependencies,
                  factory: factory
              };
          }
      }
docs: 定义模块
  
  @param {string=} id 模块标识
  @param {Array=} dependencies 依赖模块列表
  @param {Function=} factory 创建模块的工厂方法