Javascript 嵌套函数性能

Javascript nested function performance

本文关键字:性能 函数 嵌套 Javascript      更新时间:2023-09-26

我有一些嵌套函数,例如

var freak = function() {
    var die = function() { ... }
    die(this);
}

据我所知,每次调用freak时都会创建(分配)die函数。

因此,如果freak被调用了大量时间,这意味着将浪费大量内存(假设die没有使用freak上下文中的任何内容;换句话说,即使它只分配一次并在多个freak调用之间共享,它也能正常工作 - 这就是我所说的浪费)。

我的理解正确吗?这是否意味着应该完全避免嵌套函数?

据我所知,每次调用freak时都会创建(分配)die函数。

是的。这是真的。将创建一个新的函数对象。

因此,如果freak被调用了很多时间,这意味着将浪费大量内存 [...]

对于一些非常小且通常无关紧要的"浪费"价值。

JavaScript引擎现在非常高效,可以执行各种各样的技巧/优化。

例如,只有函数对象(而不是实际的函数代码!)需要在内部"复制"。

这是否意味着应该完全避免嵌套函数?

不。如果没有实际的测试用例显示其他情况,就没有"浪费"问题。这个习语(嵌套和匿名函数)在 JavaScript 中非常常见,并且针对它进行了很好的优化。

嵌套函数提供了许多好处,包括自记录代码、较小的自包含词法范围以及其他代码隔离/组织优势。