Skip to main content

Command Palette

Search for a command to run...

Spread vs Rest Operators in JavaScript

Updated
3 min read
Spread vs Rest Operators in JavaScript

What the Spread Operator Does

The spread operator (...) is used to expand values.

In simple words: 👉 Spread = “values ko tod dena / expand kar dena”

Example with Array

let arr = [1, 2, 3];

console.log(...arr);

Output:

1 2 3

Array ke elements alag-alag ho gaye.

Combining Arrays

let a = [1, 2];
let b = [3, 4];

let result = [...a, ...b];

console.log(result);

Output:

[1, 2, 3, 4]

Copying Arrays

let arr = [1, 2, 3];

let copy = [...arr];

👉 New array ban gaya (no reference issue)

Spread with Objects

let user = { name: "Devesh" };

let updatedUser = {
  ...user,
  age: 21
};

console.log(updatedUser);

Output:

{ name: "Devesh", age: 21 }

What the Rest Operator Does

The rest operator (...) is used to collect values.

In simple words: 👉 Rest = “values ko ek jagah collect kar lena”

Example in Function

function sum(...numbers) {
  console.log(numbers);
}

sum(1, 2, 3, 4);

Output:

[1, 2, 3, 4]

Sab values ek array mein aa gayi.

Rest with Parameters

function add(a, b, ...rest) {
  console.log(a);    // 1
  console.log(b);    // 2
  console.log(rest); // [3, 4]
}

add(1, 2, 3, 4);

Key Difference

Feature Spread Rest
Work Expands values Collects values
Use Arrays / Objects / Function calls Function parameters
Direction Breaks apart Groups together

Easy Way to Remember

👉 Spread = expand 👉 Rest = collect

Practical Use Cases

1. Merging Arrays (Spread)

let cart1 = ["Milk", "Bread"];
let cart2 = ["Butter"];

let finalCart = [...cart1, ...cart2];

2. Passing Arguments (Spread)

function add(a, b, c) {
  return a + b + c;
}

let nums = [1, 2, 3];

console.log(add(...nums));

3. Dynamic Function Arguments (Rest)

function total(...prices) {
  return prices.reduce((sum, p) => sum + p, 0);
}

console.log(total(100, 200, 300));

4. Updating Objects (Spread)

let user = { name: "Devesh", age: 21 };

let newUser = { ...user, age: 22 };

5. Destructuring with Rest

let arr = [1, 2, 3, 4];

let [first, ...others] = arr;

console.log(first);  // 1
console.log(others); // [2, 3, 4]

Real-Life Analogy
Spread

Like opening a box and spreading items on a table

Rest

Like collecting all items into one box