Попытка использовать строки шаблона с тегами дает «Uncaught SyntaxError: Unexpected token»

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

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: Неожиданный токен...(…)

On function tag(strings, ...values) {


person Akhilesh Kumar    schedule 14.10.2015    source источник
comment
В каком движке JS вы тестируете свой код ES6?   -  person Quentin    schedule 14.10.2015
comment
Вы используете транспилятор? Работают ли шаблонные строки в вашей среде без тегов?   -  person Bergi    schedule 14.10.2015
comment
да, я использую последнюю консоль Chrome   -  person Akhilesh Kumar    schedule 14.10.2015
comment
Worksforme   -  person Bergi    schedule 14.10.2015
comment
Chrome пока не поддерживает остальные параметры: kangax.github.io/compat- таблица/es6/#test-rest_parameters   -  person Andreas    schedule 14.10.2015


Ответы (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, вам необходимо включить синтаксис rest через флаг гармонии в текущем Chrome.

person Bergi    schedule 14.10.2015
comment
Круто, это сработало, но я не понял, как включить остаточный синтаксис. - person Akhilesh Kumar; 14.10.2015
comment
@AkhileshKumar Поместите эту ссылку в адресную строку и активируйте выделенную опцию: chrome://flags/#enable-javascript-harmony - person Andreas; 14.10.2015