ES2015 Babel String Интерполяция, не работающая с апострофом (но с двойными кавычками)

Я использую babel/grunt для изучения ES2015.

В соответствии с этим сообщением в Javascript нет реальной разницы между одиночными и двойными кавычками. то есть "тест" и "тест".

При попытке интерполяции строк, однако, кажется, что есть проблема с babeljs (или, скорее, - я). Что не так с кодом ниже, пожалуйста?

Согласно этот документ, кажется, что оба должны работать. В консоли Chrome нет ошибок.

Рабочий Js:

var name = "Bob", time = "today";
alert(`Hello ${name}, how are you ${time}?`);

Передает:

var name = "Bob",
    time = "today";
alert("Hello " + name + ", how are you " + time + "?");

Обеспечивает ожидаемый результат.

Сбой Js:

var forename = 'bob', surname = 'test';
alert('hello ${forename} ${surname} - how are you?');

Передает:

var forename = "bob",
    surname = "test";
alert("hello ${forename} ${surname} - how are you?");

и предоставляет следующий вывод:

enter image description here

Ответ 1

Вы правы, нет ничего другого между ' и ", когда дело доходит до строк, но для выполнения интерполяции строк вы должны использовать обратные ссылки вокруг строки шаблона, например:

ES2015

var forename = 'bob', surname = 'test';
alert(`hello ${forename} ${surname} - how are you?`);

Результат ES5

var forename = 'bob',
    surname = 'test';
alert('hello ' + forename + ' ' + surname + ' - how are you?');

Babel REPL