Skip to content

ES6 / ECMA6 template literals – not working

I wanted to try using template literals and it’s not working: it’s displaying the literal variable names, instead of the values. I am using Chrome v50.0.2 (and jQuery).

Example:

console.log('categoryName: ${this.categoryName}ncategoryElements: ${this.categoryElements} ');

Output:

${this.categoryName}
categoryElements: ${this.categoryElements}

Answer

JavaScript template literals require backticks, not straight quotation marks.

You need to use backticks (otherwise known as “grave accents” – which you’ll find next to the 1 key if you’re using a QWERTY keyboard) – rather than single quotes – to create a template literal.

Backticks are common in many programming languages but may be new to JavaScript developers.

Example:
categoryName="name";
categoryElements="element";
console.log(`categoryName: ${this.categoryName}ncategoryElements: ${categoryElements} `)
Output:
VM626:1 categoryName: name
categoryElements: element
See:

Usage of the backtick character (`) in JavaScript