【发布时间】:2013-12-05 03:35:32
【问题描述】:
假设我有这个功能:
function A() {
function B() {
return 1;
}
return 1 + B();
}
每次调用函数A时,函数B会被编译吗?
我记得有人说不会。但是我的记忆变得生疏了,我找不到参考。
【问题讨论】:
-
JavaScript 是一种解释型语言...编译的意思是什么?
-
我不知道不同引擎应用了哪些优化,但是在 JavaScript 层面,每次调用 A 都会创建一个新的函数 B。
-
@Josiah:现代浏览器中的引擎进行 JIT 编译。
-
@FelixKling:是的,但是无论后端做什么,JavaScript 仍然是一种解释性语言。即使这样,JIT 也只是缓存的解释
-
@JosiahHester 你不正确。现代引擎包含经典的前端和后端并生成本机代码。这称为代码的 JIT 或即时编译。代码已编译。解释语言与编译语言二分法的过时概念已成为过去。
标签: javascript compiler-optimization