【发布时间】:2013-10-09 10:21:38
【问题描述】:
越来越多的javascript 采用这种模块化方法返回空函数。您可以在node.js 的源代码中找到它。它在require.js 的文档中。它有什么作用?
define(['jquery'] , function ($) {
return function() {};
});
如果我要返回一个对象,我只会做return {};,尽管我认为返回一个空对象没有用。可能想把变量放进去。因此,这显然是有价值的。我猜它与访问返回函数范围内的函数有关。
AMD Is Not The Answer 文章中的构造又是这样的:
define(['dep1', 'dep2'], function (dep1, dep2) {
//Define the module value by returning a value.
return function () {};
});
但是上面的实际好处是什么,而不是仅仅返回你想要返回的语义上有意义的东西,例如在一个对象中?
你如何以这种方式访问外部功能范围内的东西?
function(baz) {
var foo = true,
bar = false;
if (baz) bar = true;
return function() {}; // wut?
};
虽然我在技术上并不完全“受到挑战”,但我希望有人能用外行的方式解释这一点,因为articles about modularity 不会让我开心。
【问题讨论】:
-
也许意图是返回一个空的构造函数?返回的函数可以访问定义它的范围内的变量;但既然没有,我相信这只是一个愚蠢的例子。
-
我认为这是一种避免错误的方法,所以在这种情况下,如果没有另外定义 jQuery,
jQuery(whatever)将简单地失败。这个策略是有问题的,当然需要一些背景来解释为什么要使用它。
标签: javascript function object constructor modularity