Как написать переменную внутри переменной в литерале строки шаблона?

log(`${chalk.magenta('???? LAUNCH_COMMAND')} ${chalk.green('npm run: ')} ${chalk.red('${LAUNCH_COMMAND}')}` );

Вот проблемная часть: ${chalk.red('${LAUNCH_COMMAND}')}

LAUNCH_COMMAND — это либо «производство», либо «разработка». Однако он находится внутри другого ${}.

введите здесь описание изображения


person Leon Gaban    schedule 14.07.2017    source источник
comment
Вам абсолютно не следует вкладывать строки шаблона, если вы хотите сохранить собственное здравомыслие и удобочитаемость кода.   -  person Bergi    schedule 14.07.2017


Ответы (2)


Демо

Просто используйте имя переменной для вложенной переменной в литерал строки шаблона.

`${chalk.red(LAUNCH_COMMAND)}` // for nested sting literal just use the variable name 

const LAUNCH_COMMAND = 'hi';
console.log(`${chalk.magenta('????  LAUNCH_COMMAND')} ${chalk.green('npm run: ')} ${chalk.red(LAUNCH_COMMAND)}` );

введите здесь описание изображения

person Tushar Gupta - curioustushar    schedule 14.07.2017

Вы не заключаете переменные в строковые литералы в кавычки.

log(`${chalk.magenta(????  LAUNCH_COMMAND)} ${chalk.green(npm run: )} ${chalk.red(LAUNCH_COMMAND})` ); 

^ Гипотетически должно работать, хотя мне не совсем понятен контекст, почему вы пишете такую ​​строку. Я предполагаю, что это какой-то динамический вывод.

var b = "Cats"
var c = "Dogs"

function concat(one, two) {

  return `${one} and ${two}`;

}

function compare(one, two) {

  var ans = one == two ? 'Are the same' : 'Are not the same';
  return ans;

}

console.log(`${concat(b, c)} - ${compare(b, c)}`);

person trevdev    schedule 14.07.2017
comment
@ Берги О, но это так. Смотрите мое редактирование, добавлен фрагмент. - person trevdev; 15.07.2017
comment
Нет, попробуйте первый фрагмент. Он выдает SyntaxError: Invalid or unknown token. - person Bergi; 15.07.2017
comment
Первый фрагмент не предназначен для запуска, я просто ссылаюсь на него. Мой второй фрагмент реализует этот принцип на практике. - person trevdev; 15.07.2017
comment
Я понимаю, что это был плохой пример. Мои извинения. - person trevdev; 15.07.2017
comment
Проблема в том, что параметры magenta и green не должны быть переменными. Они должны быть строковыми литералами! - person Bergi; 15.07.2017