我有一个场景,我可以传递一个函数或已经声明它。由于函数本身不会在其他任何地方使用,我计划使用匿名函数,但它不起作用,所以任何帮助都将非常感激。
就像现在一样:
function connectStatic(connect, dir) {
return connect.static(require('path').resolve(dir));
}
// ...
middleware: function (connect) {
return [proxySnippet, connectStatic(connect, './')];
}
// ...
正如我所希望的那样:
// ...
middleware: function (connect) {
return [proxySnippet, function () {
return connect.static(require('path').resolve('./'));
}];
// ...
无论如何,如果我这样做:
// ...
middleware: function (connect) {
return [proxySnippet, connect.static(require('path').resolve('./'))];
// ...
......它会起作用,但我想知道为什么它没有功能声明。
答案 0 :(得分:2)
你实际上并没有调用你的匿名函数,而在“工作”版本中,你是:
middleware: function (connect) {
return [proxySnippet, function () {
return connect.static(require('path').resolve('./'));
}()]; // <--- change here
}
现在,鉴于匿名包装函数没有真正做任何事情,你应该能够摆脱它:
middleware: function (connect) {
return [proxySnippet, connect.static(require('path').resolve('./'))];
})
答案 1 :(得分:2)
您需要调用匿名函数:
middleware: function (connect) {
return [proxySnippet, (function () {
return connect.static(require('path').resolve('./'));
}())];
为了帮助提高可读性,我将您的匿名函数包含在可选的附加级别中。
这是一篇文章,其中包含有关自动执行功能的更多信息:http://markdalgleish.com/2011/03/self-executing-anonymous-functions/