Поддерживает ли shell.8 оболочка d8 спецификаторы формата? - PullRequest
1 голос
/ 21 октября 2019

d8 - это минимальная оболочка для запуска программ JavaScript с использованием V8. Поддерживает ли реализация console.log в d8 спецификаторы / символы формата? Я попытался использовать спецификатор формата, и он напечатал спецификатор и значение переменной (как показано ниже).

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 Ответ

3 голосов
/ 21 октября 2019

Как видно из эксперимента, d8 не поддерживает спецификаторы формата. Не хотелось бы поддерживать что-либо, не являющееся законным JavaScript.

Кстати, JavaScript имеет некоторое время « шаблонные литералы ». Поэтому, не предъявляя никаких требований к 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-style %5d, AFAIKдолжен построить это сам. Если вас интересуют числа с плавающей точкой, .toFixed и .toPrecision могут быть полезны.

...