javascript - d8 shell 的 console.log 是否支持格式说明符?

标签 javascript v8

d8 是使用 V8 运行 JavaScript 程序的最小 shell。 d8 中 console.log 的实现是否支持格式说明符/字符?我尝试使用格式说明符,它打印了说明符和变量值(如下所示)。

d8> for (i = 0; i < 10; i++)  {console.log('Number is %d', i);}
Number is %d 0
Number is %d 1
Number is %d 2
Number is %d 3
Number is %d 4
Number is %d 5
Number is %d 6
Number is %d 7
Number is %d 8
Number is %d 9
undefined

我在这里看到一个类似的问题:https://github.com/nodejs/node/issues/10292 ...任何见解都会有所帮助。

最佳答案

从你的实验可以看出,d8 不支持格式说明符。它不想支持任何不合法的 JavaScript。

说到这:JavaScript 有一段时间了“template literals”。因此,无需对 d8 或 console.log 提出任何要求,您可以在任何有字符串的地方执行以下操作:

let i = 42;
console.log(`Number is ${i}`);
let just_a_string = `1 + 2 = ${1+2}`;
console.log(just_a_string);
console.assert(just_a_string === "1 + 2 == 3");

如果您希望获得更高级的格式设置,例如 C 风格的 %5d,据我所知,您必须自己构建它。如果您对 float 感兴趣,.toFixed.toPrecision可能会有帮助。

关于javascript - d8 shell 的 console.log 是否支持格式说明符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58490618/

相关文章:

javascript - 从另一个数组更新一个数组中的属性的功能方法?

javascript - 哪些搜索引擎蜘蛛执行 javascript?

javascript - 使用 .show() 和 .hide() 具有两个不同的功能,而不会相互冲突

c++ - 无法访问 "callback"函数中的 V8 上下文

javascript - Javascript 子串是虚拟的吗?

javascript - 当关联的 Javascript 对象在 V8 中被垃圾收集时,如何释放包装的 C++ 对象?

javascript - Android 键盘在验证后无法在 webview 中工作

javascript - 在一个标记中包含多个信息的 Google map

c++ - v8 C++ API : pass non-English strings from JavaScript to c++

build - 谷歌 V8 构建错误 LNK1104 : cannot open file 'ws2_32.lib'