Select Page

JavaScript Rest vs Spread Operator

by | Jul 5, 2023

In JavaScript, three dots (…) are used for both rest and spread operations. But they do different things.

Rest takes remaining user-provided values and puts them into an array. Spread takes iterable items and spreads them out into individual elements.

The spread and rest operators are useful for quickly and easily manipulating collections and arguments. They make code much cleaner and easier to read, as well as reduce the number of lines of code needed.

Rest vs Spread Operator

JavaScript is a versatile programming language that offers various features and operators to manipulate data. Two commonly used operators in JavaScript are the rest and spread operators.

While they may appear similar at first glance, they serve different purposes and have distinct use cases. In this blog post, we will explore the differences between the rest and spread operators in JavaScript and understand how they can be used effectively.

Rest Operator

The rest operator works opposite to the spread operator. It gathers several elements into an array. This is handy when you’re unsure about how many arguments a function might get, and you want to gather all of them into an array.

The rest operator, represented by three dots (…), is used to gather multiple elements into an array or object. It allows you to handle an indefinite number of function arguments or elements in an array without explicitly defining them. Let’s take a look at some examples to understand its usage:

Gathering Function Arguments

function sum(...numbers) {
  let total = 0;
  for (let number of numbers) {
    total += number;
  return total;

console.log(sum(1, 2, 3, 4)); // Output: 10

In the above example, the rest operator gathers all the arguments passed to the sum function and stores them in the numbers array. This enables us to handle any number of arguments dynamically.

Array Destructuring

const [first, second,] = [1, 2, 3, 4, 5];
console.log(first); // Output: 1
console.log(second); // Output: 2
console.log(rest); // Output: [3, 4, 5]

Here, the rest operator is used in array destructuring to assign the first two elements to individual variables (first and second), while the rest of the elements are collected in the rest array.

Spread Operator

The spread operator, also represented by three dots (…), performs the opposite operation of the rest operator. It allows you to expand elements from an array or object into individual elements. The spread operator can be used in various scenarios, including:

Array Concatenation

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const concatenatedArray = [...array1, ...array2];
console.log(concatenatedArray); // Output: [1, 2, 3, 4, 5, 6]

In this example, the spread operator is used to merge two arrays into a single array, concatenatedArray. The individual elements of both arrays are expanded and combined into a new array.

Object Cloning

const originalObj = { name: 'John', age: 30 };
const clonedObj = { ...originalObj };
console.log(clonedObj); // Output: { name: 'John', age: 30 }

The spread operator allows us to create a new object clonedObj with the same properties and values as originalObj. It effectively clones the object, making a shallow copy.

Function Argument Spreading

function multiply(x, y) {
  return x * y;

const numbers = [2, 3];
console.log(multiply(...numbers)); // Output: 6

Here, the spread operator is used to pass the elements of the numbers array as individual arguments to the multiply function. This is particularly useful when working with functions that expect separate arguments.


In JavaScript, the rest and spread operators provide powerful functionality for handling arrays, objects, and function arguments.

While the rest operator gathers elements into an array or object, the spread operator expands elements from an array or object. Understanding their differences andknowing when to use each operator is crucial for writing clean and efficient code.

The rest operator is useful when dealing with function arguments or collecting elements into a single entity, while the spread operator is handy for array concatenation, object cloning, and function argument spreading.

By leveraging the rest and spread operators effectively, you can enhance your JavaScript code and make it more flexible and readable. Take the time to experiment with these operators in different scenarios and explore their potential to simplify your coding tasks.

Remember, mastering these operators is just one step towards becoming a proficient JavaScript developer. Keep exploring the language, its features, and best practices to continuously improve your skills and create impressive web applications.


Submit a Comment

Your email address will not be published. Required fields are marked *

Looking For Something?

Follow Us

Related Articles

How to Open Links in a New Tab Using HTML and JavaScript

How to Open Links in a New Tab Using HTML and JavaScript

Introduction How to Open Links in a New Tab Using HTML and JavaScript Have you ever clicked on a link and wished it would open in a new tab instead of navigating away from the current page? Well, you're in luck! In this blog post, we'll guide you through the simple...

Recursion in JavaScript: Why and How

Recursion in JavaScript: Why and How

Recursion is a powerful programming concept that often mystifies beginners, but it's an essential tool in a developer's toolkit. In JavaScript, recursion involves a function calling itself to solve a problem. This might sound a bit perplexing at first, but let's break...

Subscribe To Our Newsletter

Subscribe To Our Newsletter

Join our mailing list to receive the latest news and updates from our team.

You have Successfully Subscribed!