Ron I
Ron I

Reputation: 4250

Why do template literals like 'some ${string}' or "some ${string}" not actually insert the values of mentioned expressions?

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}

Upvotes: 94

Views: 86702

Answers (2)

ilyas
ilyas

Reputation: 71

There are three quotation marks, but just one entrance is working which we can use as TEMPLATE LITERALS:

  1. " " (é key on keyboard) is not working:
console.log("Server is running on port: ${PORT}")
  1. ' ' (Shift + 2 key on keyboard) is not working:
console.log('Server is running on port: ${PORT}')
  1. ` ` (Alt + Num96 key on keyboard) is working:
console.log(`Server is running on port: ${PORT}`)

Screenshot of console.log(Server is running on port: ${PORT})

Upvotes: 3

Tim Grant
Tim Grant

Reputation: 3456

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

Upvotes: 211

Related Questions