2015-06-23 8 views
12

Używam babel/chrzęst, aby nauczyć się ES2015.ES2015 Babel String Interpolacja nie działa z apostrofem (ale ma podwójne cudzysłowy)

Zgodnie z this post nie ma rzeczywistej różnicy w JavaScript między pojedynczymi i podwójnymi cytatami. tj. "test" i "test".

Jednak przy próbie interpolacji ciągów wygląda na to, że istnieje problem z babeljs (lub bardziej prawdopodobnie - ja). Co jest nie tak z poniższym kodem?

Zgodnie z this document, wydaje się, że oba powinny działać. W konsoli Chrome nie ma żadnych błędów.

robocza JS:

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

Transpiles do:

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

Zapewnia oczekiwany rezultat.

przypadku braku JS:

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

Transpiles do:

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

i daje następujący wynik:

enter image description here

+2

To tylko literówka: w drugim przykładzie nie używasz tyknięć bac ... –

Odpowiedz

35

Masz rację, to nie różni się między ' i " jeśli chodzi o ciągów, ale w tym celu interpolacji ciąg, wy koniecznością użytku backticks wokół swojej ciąg szablonu, np

ES2015

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

Wynikające ES5

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

Babel REPL

Powiązane problemy