gpt4 book ai didi

javascript - 在Javascript引擎(v8)中,优化阶段的 "implicit call"到底意味着什么?

转载 作者:行者123 更新时间:2023-12-03 00:18:32 26 4
gpt4 key购买 nike

我是 javascript 引擎的新手。在优化阶段,如果隐式调用位于某个 block 中,优化器需要为此 block 添加一些检查。在这种情况下,隐式调用到底意味着什么?

据我了解,我认为下面的一个是隐式调用(cb函数)。是这样吗?

function foo(x, cb){
let arr = [1,2,3,4];
cb();
return arr[1];
}

最佳答案

V8 开发人员在这里。恐怕我不确定你的意思,所以我会给出我最好的猜测:“隐式调用”是一个从语法上看不出来的调用。

您的示例中的调用非常明确:查看代码的任何人(人类或编译器)都可以立即看到那里有一个调用。但考虑这个例子:

function addFields(a, b) {
return a.field + b.field;
}

没有电话,对吗?但现在考虑应用程序中其他地方的类似代码:

var b = {field: 42};
var a = {get field() {delete b.field; return 0;}}
console.log(addFields(a, b));

突然间,看似简单的字段加载将隐式调用用户定义的函数,这可能会产生各种副作用(例如修改不相关的对象)。

隐式调用的其他示例是诸如 "the value is: "+ x 之类的表达式,如果 x ,它将隐式调用 x.toString() code> 还不是字符串。

关于javascript - 在Javascript引擎(v8)中,优化阶段的 "implicit call"到底意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54434389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com