Попытка использовать тегированные строки шаблона приводит к 'Uncaught SyntaxError: Неожиданный токен'

Я использую помеченные строки шаблона в следующем коде

var a = 5;
var b = 10;
var pp="";
function tag(strings, ...values) {
  pp+=strings[0]; // "Hello "
  pp+=strings[1]; // " world "
  pp+=values[0];  // 15
  pp+=values[1];  // 50

  console.log(pp+"Bazinga!");
}

tag`Hello ${ a + b } world ${ a * b}`;

но это дает

Uncaught SyntaxError: Неожиданный токен...(…)

На function tag(strings, ...values) {

1 ответ

Решение

Как синтаксическая ошибка Unexpected token ... говорит вам, что проблема не в теге, а в использовании оператора rest. Попробуйте следующее:

var a = 5,
    b = 10;
function tag(strings) {
  var pp="";
  pp+=strings[0]; // "Hello "
  pp+=strings[1]; // " world "
  pp+=arguments[1];  // 15
  pp+=arguments[2];  // 50

  return pp+"Bazinga!";
}

console.log(tag`Hello ${ a + b } world ${ a * b}`);

В соответствии с таблицей совместимости ES6 необходимо включить синтаксис отдыха с помощью флага гармонии в текущем Chrome.

Другие вопросы по тегам