嵌套函数总是需要重新定义吗
Will a nested function always have to be redefined?
出于架构和名称空间的目的,我想这样做:
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()
吗?
您可以使用闭包:
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;
}
}());
internal保存在闭包中,对outer保持"私有"状态,并且仅在初始化external时创建一次。
相关文章:
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- 在JavaScript中定义自定义对象和函数(第2部分)
- 在JavaScript中定义自定义对象和函数
- 为html标记定义自定义css样式
- 未定义===未定义比较什么
- 在这段代码中:为什么e被定义在定义e的括号中
- 为什么Inspect元素中的错误显示函数myNUM()没有定义?如何定义函数
- 定义自定义JavaScript异常的较短方法
- 扩展或定义新的dat.gui属性控制器的最佳方法
- 在javascript中“定义”和定义有什么区别
- grunt-usemin:定义自定义流
- 用于定义自定义服务的语法
- 在navigator对象中定义新的mimetype
- 在 JavaScript 中由装饰器重新定义后的原始函数值
- 如何使用变量来定义新的google.maps.LatLng()
- Facebook图形api和新定义的对象和动作:消息:"未知路径组件"
- 由于构造函数在另一个函数中,所以没有定义新对象
- 在定义新的字符串方法时使用reduce()
- 将数组值替换为 Javascript 中新定义的值
- 如何在Firefox中隐藏自定义新标签URL