首页 > 解决方案 > 每次调用嵌套函数时都会定义 JavaScript 的嵌套函数吗?

问题描述

这个问题中,我发现每次嵌套函数按预期调用时都会创建嵌套函数。但是“创造”这个词并没有说明这个问题。Javascript引擎是否也必须每次都解释嵌套函数的定义?我问这个问题是想知道引擎是否将嵌套函数的定义保存在某处,并将返回一个与嵌套函数中使用的一些变量绑定的函数,就像下面的代码一样。

class A {
    functionForInstance = this.sharedDefinition.bind(this);

    sharedDefinition() {
        return this.someField;
    }
}

还有一个问题

根据@Jose Marin 的回答,引擎从保存的函数定义中创建闭包(实例)。那么它是否也适用于箭头函数?

标签: javascriptperformance

解决方案


引擎不需要每次都解释嵌套函数的定义。

函数是只读对象,一旦定义它们就可以随时重用。

您指的是可能使人们感到困惑的东西。函数执行是调用堆栈中的控制,你可以发现同一个函数被多次调用并使用不同的闭包。但是它们在调用堆栈之外都共享相同的定义。


推荐阅读