我有一些嵌套函数,如
var freak = function() {
var die = function() { ... }
die(this);
}据我所知,每次调用die时都会创建(分配) freak函数。
因此,如果freak被调用了很多时间,这意味着大量内存将被浪费(假设die没有使用freak上下文中的任何内容;换句话说,即使只分配了一次,并在freak的多个调用之间共享--这就是浪费的意思)。
我的理解正确吗?这是否意味着应该完全避免嵌套函数?
发布于 2013-11-05 00:22:06
据我所知,每次调用
die时都会创建(分配)freak函数。
是。这是真的。创建了一个新的函数对象。
因此,如果
freak被调用了很多时间,这意味着大量的内存将被浪费.
对于一些非常小和通常无关紧要的价值“浪费”。
如今,JavaScript引擎非常高效,可以执行各种各样的技巧/优化。
例如,只有函数对象(而不是实际的函数代码!)内部需要“复制”。
..。这是否意味着应该完全避免嵌套函数?
不是的。如果没有实际的测试用例,就不会出现“浪费”问题。这个成语(嵌套函数和匿名函数)在JavaScript中非常常见,并且非常适合。
嵌套函数提供了许多好处,包括自文档化代码、较小的自包含词法范围以及其他代码隔离/组织优势。
https://stackoverflow.com/questions/19779752
复制相似问题