JavaScript在Web浏览器环境中执行时是否被编译为机器码
Is JavaScript compiled to machine code when executed in a Web Browser Environment?
我试图更好地理解JavaScript是如何在web浏览器环境中执行的。
在Node.js方面,我理解在Node.js程序中编写的JavaScript代码是用c++代码(V8)编译的,最终成为机器码。由于Node.js可以与文件系统和其他机器级任务交互,所以对我来说,它最终必须成为机器码是有道理的。
我对网络浏览器环境有不同的感觉。根据我的理解,主要目标是与DOM交互。JavaScript需要被编译成机器代码来与DOM交互吗?
我对此感到困惑。Node.js和Chrome都运行在V8上。V8是用c++编写的,据我所知,它将JavaScript代码编译成处理器可以理解的机器码。
你需要一个JavaScript引擎来实现ECMA-262,这是一个引擎的全部目的(我认为?)但是,web浏览器是否需要将JavaScript编译为机器语言级别,它执行的是什么机器操作?
这里是我研究过的几篇文章,不幸的是,我没有在其中找到我问题的答案:
- JavaScript引擎- Wiki
- V8引擎如何工作 浏览器如何处理JavaScript
引擎是用c++编写的,然后这些代码由编译器翻译成机器码。一旦代码变成机器语言,就可以由计算机运行。当引擎运行时,它可以读取用JavaScript编写的代码,解释它,并执行代码要求它做的事情。在这种情况下,实际上在计算机中运行的是引擎代码,它只是碰巧做了另一个代码告诉它要做的事情。node和浏览器的区别在于,浏览器不会执行JavaScript要求它执行的任何操作。另一件要记住的事情是,一些浏览器和节点实时地将JavaScript代码转换为机器代码,以获得更快的速度。浏览器也会小心地避免编写危险的机器码,但理论上这是可能发生的。
- 浏览器是否持久缓存脚本元素的编译版本
- 是否可以使用有角度的HTML文档进行$编译
- V8 javascript 引擎是否将所有 javascript 编译为机器语言
- Webpack:是否可以在编译时评估javascript表达式
- IE11是否删除了javascript条件编译
- JavaScript是否在每次调用函数时都对其进行编译
- Angular 在使用 jq 追加方法时是否编译指令
- 编译到 javascript 是否排除了 dart 添加弱引用
- AngularJS - 是否可以在链接或编译中的指令上更改ngModel属性的值
- 是否可以将车把模板编译为 html
- 是否可以将角度模板编译为最终的 html 字符串
- 如何识别 js 是否是闭包编译的
- 在CoffeeScript中,是否存在一个'官方'在运行时而不是编译时插入字符串的方法
- AngularJS-是否可以从代码中编译和链接模板
- AngularJS:TypeScript编译过程并吞噬uglify-是否有一种方法可以强制TS使用IIFE生成函数而不是
- 是否有可编译到javascript的lisp
- nodejs/V8是否将编译后的机器码存储在磁盘上的任何地方?
- Java Scripting (jsr223):是否可以(重新)添加rhino编译功能?
- JavaScript在Web浏览器环境中执行时是否被编译为机器码
- 在babel编译时是否有方法注入或忽略全局变量?