对于体系结构和命名空间,我想这样做:
function outer (arr) {
function inner(arrElement) {
return doStuffTo(arrElement);
}
var results = [];
arr.forEach(element, index, array) {
results.push(inner(element));
}
return results;
}
基本上,函数内的函数。简单的东西。但是outer()
会被执行很多。这是否意味着每次调用outer()
时都会应用定义函数(在评估函数之上)的开销?为了提高效率,我必须在外部定义inner()
吗?
答案 0 :(得分:4)
您可以使用闭包:
var outer = (function() {
function inner(arrElement) {
return doStuffTo(arrElement);
}
return function (arr) {
var results = [];
arr.forEach(element, index, array) {
results.push(inner(element));
}
return results;
}
}());
内部保存在一个闭包中,并且对外部保持“私有”,并且仅在外部初始化时创建一次。