Kha*_*yen 13 javascript garbage-collection memory-leaks memory-management
我有一些嵌套函数,如
var freak = function() {
var die = function() { ... }
die(this);
}
Run Code Online (Sandbox Code Playgroud)
据我所知,die每次freak调用时都会创建(分配)函数.
因此,如果freak被调用很多时间,这意味着将浪费大量内存(假设die没有使用来自freak上下文的任何内容;换句话说,即使它只被分配一次并在多次调用之间共享,它也能正常工作freak-这就是我浪费的意思).
我的理解是否正确?这是否意味着应该完全避免嵌套函数?
use*_*740 24
据我所知,
die每次freak调用时都会创建(分配)函数.
是.这是真的.创建一个新的函数对象.
因此,如果
freak被调用很多时间,那意味着很多内存将被浪费[...]
对于一些非常小且通常无关紧要的"浪费"的价值.
JavaScript引擎现在效率很高,可以执行各种技巧/优化.
例如,只有函数对象(但不是实际的函数代码!)需要在内部"复制".
[...]这是否意味着应该完全避免嵌套函数?
号有没有 "浪费"的问题没有实际的显示,否则测试案例.这个成语(嵌套和匿名函数)在JavaScript中很常见,并且非常优化.
嵌套函数提供许多好处,包括自我记录代码,较小的自包含词法范围以及其他代码隔离/组织优势.