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

时间:2019-10-21 16:36:27

标签: javascript v8

d8是使用V8运行JavaScript程序的最小外壳。 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 ...任何见解都会有所帮助。

1 个答案:

答案 0 :(得分:3)

从实验中可以看到,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,AFAIK),则必须自己构建。如果您对浮点数感兴趣,.toFixed.toPrecision可能会有所帮助。