假设我有这个功能:
function A() {
function B() {
return 1;
}
return 1 + B();
}
当我调用函数 A 时,函数 B 是否每次都被编译?
我记得有人说不会。但是我的内存变得生锈了,我找不到引用。
最佳答案
JavaScript 标准规定,JavaScript 执行环境必须解析函数并产生拒绝执行脚本中任何代码(如果存在)的早期错误(例如缺少右引号、不匹配的大括号等)。它没有说明之后会发生什么。
但是,所有现代引擎都会在执行函数之前生成与该函数对应的 native 代码。所有后续调用都将使用之前生成的代码。有时,引擎会使用它在执行过程中收集的信息来重新生成代码,或者如果它可以确定内联函数代码会导致更好的执行时间,它可能会内联函数代码。
关于javascript - JavaScript 是否会在每次调用函数时都对其进行编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20390912/