使用 d8
d8
是 V8 自带的开发者 shell。
d8
可用于在本地运行一些 JavaScript 代码或调试对 V8 所做的更改。 使用 GN 构建 V8 用于 x64 的输出在 out.gn/x64.optdebug/d8
中生成一个 d8
二进制文件。您可以使用 --help
参数调用 d8
以获取有关用法和标志的更多信息。
打印到命令行 #
如果您计划使用 d8
运行 JavaScript 文件而不是交互式运行,那么打印输出可能非常重要。这可以通过使用 console.log
来实现。
$ cat test.js
console.log('Hello world!');
$ out.gn/x64.optdebug/d8 test.js
Hello world!
d8
还附带一个全局 print
函数,它执行相同的操作。但是,console.log
比 print
更受欢迎,因为它也适用于 Web 浏览器。
读取输入 #
使用 read()
,您可以将文件的内容存储到变量中。
d8> const license = read('LICENSE');
d8> license
"This license applies to all parts of V8 that are not externally
maintained libraries. The externally maintained libraries used by V8
are:
… (etc.)"
使用 readline()
交互式输入文本
d8> const greeting = readline();
Welcome
d8> greeting
"Welcome"
加载外部脚本 #
load()
在当前上下文中运行另一个 JavaScript 文件,这意味着您可以访问该文件中声明的任何内容。
$ cat util.js
function greet(name) {
return 'Hello, ' + name;
}
$ d8
d8> load('util.js');
d8> greet('World!');
"Hello, World!"
将标志传递到 JavaScript #
可以使用 d8
在运行时将命令行参数提供给您的 JavaScript 代码。只需在命令行上 --
后面传递它们。然后,您可以使用 arguments
对象在脚本的顶层访问它们。
out.gn/x64.optdebug/d8 -- hi
现在,您可以使用 arguments
对象访问参数数组。
d8> arguments[0]
"hi"
更多资源 #
Kevin Ennis 的 D8 指南 提供了有关使用 d8
探索 V8 的非常好的信息。
d8
名称的由来:在早期,V8 拥有一个“示例 shell”,其目的是演示如何嵌入 V8 来构建 JavaScript shell。它有意简化,仅称为“shell”。不久之后,添加了一个“开发者 shell”,它具有更多便利功能来帮助开发人员完成日常工作,并且它也需要一个名称。选择“d8”作为名称的最初原因已不为人知;它流行起来是因为“developer”省略了 8 个字符,因此“d8 shell”作为缩写是有意义的,并且与“V8”作为项目名称也相得益彰。