Hiprup

What is the spread operator for function arguments?

The spread operator expands an array into individual arguments when calling a function.

  • Replaces apply — fn(...args) is the modern alternative to fn.apply(null, args).

  • Combine — mix spread with regular arguments freely.

  • Math example — Math.max(...numbers) finds the max of an array.

Cleaner and more readable than apply for passing an array as separate arguments.

const numbers = [5, 2, 8, 1, 9];

// Before spread (apply)
console.log(Math.max.apply(null, numbers)); // 9

// With spread (cleaner)
console.log(Math.max(...numbers)); // 9
console.log(Math.min(...numbers)); // 1

// Multiple spreads
const arr1 = [1, 2];
const arr2 = [3, 4];
console.log([...arr1, ...arr2]);   // [1, 2, 3, 4]

function sum(a, b, c) { return a + b + c; }
console.log(sum(...[1, 2, 3]));     // 6

// With new (apply cannot do this)
const args = [2024, 0, 15];
const date = new Date(...args);     // Jan 15, 2024
// new Date.apply(null, args) — TypeError!

...numbers expands the array into individual arguments: Math.max(5, 2, 8, 1, 9). Replaces the verbose .apply(null, array) pattern. Works with new (apply cannot).

Multiple arrays can be spread in one call. Sum example shows spreading into a regular function.

Spread replaces .apply for passing arrays as arguments. Math.max(...arr) is the classic example.

Works with new (apply cannot). Cleaner and more readable than the .apply pattern.