Chrome 控制台:虚拟机

问题描述 投票:0回答:2

直接在 Chrome 的控制台中执行脚本时,我看到了这个:

enter image description here

有谁知道VM117:2是什么意思

VM 代表什么?

google-chrome google-chrome-devtools
2个回答
56
投票

它是“虚拟机”一词的缩写。 在 Chrome JavaScript 引擎(称为 V8)中,每个脚本都有自己的脚本 ID。

有时 V8 没有有关脚本文件名的信息,例如在

eval
的情况下。因此 devtools 使用文本“VM”与脚本 ID 连接作为这些脚本的标题。

某些网站可能会通过 XHR 获取许多 JavaScript 代码并

eval
。如果开发人员想要查看这些脚本的实际脚本名称,他们可以使用sourceURL。 DevTools 解析它并将其用于标题、映射等。


2
投票

感谢@MRB,

我重新审视了这个问题,今天找到了解决方案, 感谢https://stackoverflow.com/a/63221101/1818089

queueMicrotask (console.log.bind (console, "Look! No source file info..."));

它将相似的元素分组,因此请确保为每个日志行添加唯一标识符,以便能够查看所有数据。

在以下示例中进行演示。

而不是

data = ["Apple","Mango","Grapes"];
for(i=0;i<10;i++){
    queueMicrotask (console.log.bind (console, " info..."+i));
}

使用

data = ["Apple","Mango","Grapes"];
for(i=0;i<data.length;i++){
    queueMicrotask (console.log.bind (console, " info..."+i));
}

更好的方法是创建一个console.print函数来执行此操作并调用它而不是console.log,如https://stackoverflow.com/a/64444083/1818089

中指出的
// console.print: console.log without filename/line number
console.print = function (...args) {
    queueMicrotask (console.log.bind (console, ...args));
}

注意上面提到的分组问题。

© www.soinside.com 2019 - 2024. All rights reserved.