最近,我在我的公司中看到带有闭包函数的生产代码返回。比如return (function() {...}());
我不喜欢看到这个,但我不是权威来源。我想我会问 StackOverflow 为什么以及何时使用这个好/坏。
* 笔记 *
假设您不担心名称空间污染,因为所有这些功能都已经在关闭中。
示例 1a:
function foo(bar) {
return {
x: 1 + bar,
y: 1 - bar,
duration: (function() {
var i = 0,
len = 5;
var results = 0;
for (; i < bar; i++) {
results += 1 + (results * bar);
}
return results;
}())
};
}
示例 1b:
function barProcess(bar) {
var i = 0;
var len = 5;
var results = 0;
for (; i < bar; i++) {
results += 1 + (results * bar);
}
return results;
}
function foo(bar) {
return {
x: 1 + bar,
y: 1 - bar,
duration: barProcess(bar)
};
}
示例 1c:
function foo(bar) {
var i = 0;
var len = 5;
var results = 0;
for (; i < bar; i++) {
results += 1 + (results * bar);
}
return {
x: 1 + bar,
y: 1 - bar,
duration: results
};
}
观察:
Example1a:
如果需要,内部函数会利用闭包。
示例 1b:
万一barProcess
可能需要一些闭包,这可能会使参数列表很长并且难以维护。
Example1c:
每次调用没有额外的函数创建。最容易调试(在我看来)。
如果有人能给我一些技术原因,说明为什么应该使用示例 a、b 或 c,那将是非常棒的。
所以,我蹩脚的答案并没有让我满意,所以我尝试了这个。 JS 性能测试。我认为这让我的观察不会太远。