JavaScript ES6 Advanced

Advanced ES6+ features: spread/rest operators, default parameters, and ES6 modules.

Spread Operator

# Array spread
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];  # [1,2,3,4,5]

# Object spread
const obj1 = {a: 1, b: 2};
const obj2 = {...obj1, c: 3};

# Function arguments
Math.max(...arr1);  # Spread array

Rest Parameters

# Rest in functions
function sum(...numbers) {
    return numbers.reduce((a, b) => a + b);
}
sum(1, 2, 3, 4);  # 10

# With other parameters
function myFunc(first, ...rest) {
    console.log(first, rest);
}

Default Parameters

# Function defaults
function greet(name = "Guest") {
    return `Hello, ${name}!`;
}

# Multiple defaults
function createUser(name, age = 18, role = "user") {
    return {name, age, role};
}

Modules

# Export
export const pi = 3.14159;
export function add(a, b) { return a + b; }
export default MyClass;

# Import
import {add, pi} from './math.js';
import MyClass from './class.js';
import * as math from './math.js';