RequireJS Callback参数函数依赖关系数组的映射

时间:2014-11-07 10:29:37

标签: javascript jquery requirejs amd

我在RequireJS中注意到以下代码;

define(['ojs/ojcore', 'ojs/ojprogressbar', 'ojs/ojtree'],        
function(oj)
{
 return oj;
});

现在我认为依赖数组的回调函数映射必须一对一匹配。

但是,在上面的代码中,有3个数组依赖项,但只有一个参数在回调函数中指定。

代码是否仍然有效?映射是如何发生的?它是按照正常的Javascript bheavior还是RequireJS特定的?

1 个答案:

答案 0 :(得分:0)

在上下文中,您显示的代码中没有任何异常。例如,最后2个模块可能以某种方式注册第一个模块,并且实际上不返回模块值。那完全没问题。该函数将使用3个参数调用,但只有第一个参数将绑定到变量名称(oj)。这是正常的JavaScript行为,不是RequireJS特有的。例如,你可以这样做:

function foo(bar) {
}

foo(1, 2, 3);

bar会在调用1时获得值foo23也将被传递,但不会绑定到任何变量。您仍然可以使用自动arguments变量访问它们。

通常不返回值的模块的典型示例是jQuery插件。例如,您可以:

define(['jquery', 'pluginA', 'pluginB'], function ($) {
    $('#whatever').pluginA(....);
    $('#somethingelse').pluginB(....);
});

这很常见。插件注册jQuery(或$)对象本身,其模块返回undefined值。