Template Literals

Backticks (`) enable multi-line strings and variable interpolation.

const name = "Alice";
const greeting = `Hello, ${name}!`;
console.log(greeting); // "Hello, Alice!"

Supports multi-line strings:

const message = `This is
a multi-line string.`;

Enhanced Object Literals

Shorter syntax for defining object properties and methods.

const age = 30;
const person = {
  name: "Alice",
  age,  // Same as age: age
  greet() {
    return `Hi, I'm ${this.name}`;
  }
};
console.log(person.greet()); // "Hi, I'm Alice"

Default Parameters

Set default values for function parameters.

const greet = (name = "Guest") => `Hello, ${name}`;
console.log(greet()); // "Hello, Guest"
console.log(greet("Bob")); // "Hello, Bob"

Destructuring Assignment

Extract values from objects and arrays.

Object Destructuring

const person = { name: "John", age: 30 };
const { name, age } = person;
console.log(name, age); // "John" 30

// Use originalName: aliasName to rename variables.
const { name: username, age: userAge } = person;

// Default Values
const { name, age, sex = "male" } = person;
console.log(sex); // "male" (if `sex` is undefined in person)

Array Destructuring

const nums = [1, 2, 3];
const [first, second] = nums;
console.log(first, second); // 1 2

Nested Destructuring

const user = { info: { name: "Alice", age: 28 } };
const { info: { name, age } } = user;
console.log(name, age); // "Alice" 28

Destructuring with Function Parameters