javascript - JavaScript 是否会在每次调用函数时都对其进行编译?

标签 javascript compiler-optimization

假设我有这个功能:

function A() {
  function B() {
    return 1;
  }

  return 1 + B();
}

当我调用函数 A 时,函数 B 是否每次都被编译?

我记得有人说不会。但是我的内存变得生锈了,我找不到引用。

最佳答案

JavaScript 标准规定,JavaScript 执行环境必须解析函数并产生拒绝执行脚本中任何代码(如果存在)的早期错误(例如缺少右引号、不匹配的大括号等)。它没有说明之后会发生什么。

但是,所有现代引擎都会在执行函数之前生成与该函数对应的 native 代码。所有后续调用都将使用之前生成的代码。有时,引擎会使用它在执行过程中收集的信息来重新生成代码,或者如果它可以确定内联函数代码会导致更好的执行时间,它可能会内联函数代码。

关于javascript - JavaScript 是否会在每次调用函数时都对其进行编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20390912/

相关文章:

javascript - .toggleClass 不切换某个类,但正在处理所有其他类

javascript - 将最后一个可见的伪元素向左移动 12px

rust - 为什么我的 Release模式 Rust 可执行文件包含带有绝对路径名的字符串?

glsl - 着色器中边界卷层次结构的遍历

gcc - 几年前构建的gcc版本的编译器如何仍能针对最近发布的处理器进行编译?

java - com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize 的用法和性能

javascript - 在缓存页面中调用动态内容(当前使用 ajax)的正确方法是什么?

javascript - 仅当所有子对象均为 true 时才从对象返回 true

javascript - Jquery Mobile 切换页面后的调用功能

c++ - 如何减小 WASM 二进制文件的大小?