为什么某些函数调用在 v8 源的 JS 文件中前面有一个 %
Why are some of the function invocations preceded by a % in JS files for v8 source?
我在许多代码中看到%
。你能向我解释一下它的目的或它的作用吗?
编辑:我知道数学13 % 10 = 3
的操作数,但我看到的就像return %foo
。
在查看 v8 源文件时遇到此问题
为什么某些函数调用前面带有 % 号?
%CheckIsBootstrapping();
//---
// Only used by async-await.js
function RejectPromise(promise, reason, debugEvent) {
%PromiseReject(promise, reason, debugEvent);
}
//---
var callbacks = %create_resolving_functions(promise, debugEvent);
根据您在注释中提供的链接,%
字符似乎在某些 V8 JavaScript 引擎源代码中使用,以指示将在解析 JavaScript 源代码时执行的C++运行时方法。
例如,字符串中的行.js:
return %StringBuilderConcat(parts, len + 1, "");
当解析器遇到时,将执行StringBuilderConcat
方法。您可以在runtime.h中找到可用于V8 JavaScript文件的运行时方法列表(注意,我没有C++的经验,所以据我所知,这与string.js中引用的StringBuilderConcat
方法无关,但我认为这是一回事):
#define RUNTIME_FUNCTION_LIST_ALWAYS_1(F) '
/* Property access */ '
F(GetProperty, 2, 1) '
F(KeyedGetProperty, 2, 1) '
/* ... */
F(StringBuilderConcat, 3, 1) '
/* ... */
如前所述,return %foo
会在 JavaScript 中抛出一个 SyntaxError。
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 如何在下面的ES6循环中获得前面的文本
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- 直接下载文件,而不是从window.open(url)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Javascript运行php文件,然后下载文件
- 在文件前面加上 .htaccess 以指定标记
- 为什么某些函数调用在 v8 源的 JS 文件中前面有一个 %