【发布时间】:2020-02-23 17:44:19
【问题描述】:
在许多 JavaScript 库中,我将 global, factory 视为函数的参数。
例如:
jQuery:
( function( global, factory ) {
"use strict";
if ( typeof module === "object" && typeof module.exports === "object" ) {
//...
Vue.js:
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = global || self, global.Vue = factory());
}(this, function () { 'use strict';
/* */
// ...
可能还有更多的例子......
我的问题是:为什么global 和factory 经常被用作参数,它们是什么?
【问题讨论】:
-
这些特定名称可能是某些模块捆绑器的输出,但请查找“JavaScript UMD”作为一个好的起点。
-
这是UMD pattern 标头
-
您缺少一些代码来完全解释 jQuery,但您可以清楚地看到
factory是function () { 'use strict'; /* */ ... -
@slebetman 恐怕我听不懂你想说什么。
-
您可以在自己的代码示例中看到,
global是this,factory是function () {...。代码声明了一个函数,为了我们的目的,让我们给它一个名字foo-function foo (global, factory) {...}。然后它称它为foo(this, function () { 'use strict' ...。但它这样做并没有像我们那样给它一个名字,所以它看起来像这样:(function (global, factory) {...}( this, function () {'use strict'; ...})。它基本上是一个 IIFE
标签: javascript