[英]In Javascript Engine (for v8), what exactly means “implicit call” in optimization phases?
我是javascript引擎的新手。 在優化階段,如果implicit call
位於某個塊中,則優化器需要為此塊添加一些檢查。 在這種情況下, implicit call
確切含義是什么?
據我了解,我認為下面是implicit call(cb function)
。 那正確嗎?
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
還不是String,則它將隱式調用x.toString()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.