我在RequireJS中注意到以下代码;
define(['ojs/ojcore', 'ojs/ojprogressbar', 'ojs/ojtree'],
function(oj)
{
return oj;
});
现在我认为依赖数组的回调函数映射必须一对一匹配。
但是,在上面的代码中,有3个数组依赖项,但只有一个参数在回调函数中指定。
代码是否仍然有效?映射是如何发生的?它是按照正常的Javascript bheavior还是RequireJS特定的?
答案 0 :(得分:0)
在上下文中,您显示的代码中没有任何异常。例如,最后2个模块可能以某种方式注册第一个模块,并且实际上不返回模块值。那完全没问题。该函数将使用3个参数调用,但只有第一个参数将绑定到变量名称(oj
)。这是正常的JavaScript行为,不是RequireJS特有的。例如,你可以这样做:
function foo(bar) {
}
foo(1, 2, 3);
bar
会在调用1
时获得值foo
。 2
和3
也将被传递,但不会绑定到任何变量。您仍然可以使用自动arguments
变量访问它们。
通常不返回值的模块的典型示例是jQuery插件。例如,您可以:
define(['jquery', 'pluginA', 'pluginB'], function ($) {
$('#whatever').pluginA(....);
$('#somethingelse').pluginB(....);
});
这很常见。插件注册jQuery
(或$
)对象本身,其模块返回undefined
值。