揭开 JavaScript 引擎的面纱(2)
因此,考虑到编译器和解释器的优缺点,如果我们同时利用两者的优点,该怎么办? 这就是 JIT(Just In Time) Compiler 的用武之地。它是 Interpreter 和 Compiler 的结合,现在大多数浏览器都在更快,更高效地实现此功能。同时 V8 引擎也使用此功能。 在这个过程中,
这仅意味着性能将在逐渐提高,同时不会有阻塞执行的时间。 关于 ByteCode 作为机器代码,ByteCode 不能被所有计算机理解及执行。它仍然需要像虚拟机或像 Javascript V8 引擎这样的中间件才能将其转换为机器可读的语言。 这就是为什么我们的浏览器可以在上述5个阶段中借助 JavaScript 引擎在 Interpreter 中执行 ByteCode 的原因。 所以您可以会有另一个问题, JavaScript 是一门解释型语言吗? JavaScript 是但不完全是一门解释型语言。Brendan Eich 最初是在 JavaScript 的早期阶段创建 JavaScript 引擎 “ SpiderMonkey” 的。该引擎有一个 Interpreter 来告诉浏览器该怎么执行代码。 但是现在我们的引擎不仅包括了 Interpreter,还有 Compiler。 我们的代码不仅可以被转换成 ByteCode,还可以被编译输出优化后的代码。 因此,从技术上讲,这完全取决于引擎是如何实现的。 JavaScript 引擎的整体工作原理就是这样。相信您无需学习 JavaScript 也可以理解。 当然,您甚至可以在不知道 JavaScript 如何工作的情况下编写代码。 但是,如果我们了解一些幕后的知识,或许能让我们编写出更好的代码。
(编辑:ASP站长网) |