javascript - 每次调用嵌套函数时都会定义 JavaScript 的嵌套函数吗?
问题描述
从这个问题中,我发现每次嵌套函数按预期调用时都会创建嵌套函数。但是“创造”这个词并没有说明这个问题。Javascript引擎是否也必须每次都解释嵌套函数的定义?我问这个问题是想知道引擎是否将嵌套函数的定义保存在某处,并将返回一个与嵌套函数中使用的一些变量绑定的函数,就像下面的代码一样。
class A {
functionForInstance = this.sharedDefinition.bind(this);
sharedDefinition() {
return this.someField;
}
}
还有一个问题
根据@Jose Marin 的回答,引擎从保存的函数定义中创建闭包(实例)。那么它是否也适用于箭头函数?
解决方案
引擎不需要每次都解释嵌套函数的定义。
函数是只读对象,一旦定义它们就可以随时重用。
您指的是可能使人们感到困惑的东西。函数执行是调用堆栈中的控制,你可以发现同一个函数被多次调用并使用不同的闭包。但是它们在调用堆栈之外都共享相同的定义。
推荐阅读
- java - 如果未在其余查询中指定,如何将布尔值设置为 nul 而不是 false
- android - 如何正确地将颤振项目从 VSCode 导入到 Andriod Studio 以进行 Gradle Sync?
- google-apps-script - XmlService getChild 不返回命名元素
- javascript - 通过JS中的脚本更改文本框输入
- azure - 使用 Azure 数据工厂将压缩的 XML 文件从 HTTP 链接源复制并提取到 Azure Blob 存储
- r - 按文件大小过滤和关于 r 中数字编码的问题
- python - Python Scrapy - 输出具有相同名称的 XML 元素
- php - 电子邮件 - 如何识别用户的电子邮件回复?
- javascript - 当全部被选中时,引导多选不发送数据
- python - 在 PySpark Pandas UDF 中指定用户定义函数的正确方法