In JavaScript, the three dots ... is a versatile operator known as the Three Dots Operator. It has two distinct functions – the Spread Operator and the Rest Operator. This article delves into the functionalities and uses cases of this operator.

Understanding the Three Dots Operator

JavaScript has evolved over time, and with ES6, it introduced the Three Dots Operator, which can be used as either the Spread Operator or the Rest Operator, depending on the context. This syntax has made the language more powerful and the code cleaner.

The Spread Operator

The Spread Operator allows an iterable such as arrays or strings to be expanded, or spread, into individual elements or properties.

One of the common uses of the Spread Operator is to copy arrays. Instead of using traditional methods like slice(), one can now easily copy arrays using this syntax.

let array1 = [1, 2, 3];
let array2 = [...array1];

Not only arrays, but objects can also be copied using the Spread Operator.

let obj1 = {a: 1, b: 2};
let obj2 = {...obj1};

The Spread Operator also makes the merging of arrays or objects simple.

For arrays:

let array1 = [1, 2, 3];
let array2 = [4, 5, 6];
let mergedArray = [...array1, ...array2];

For objects:

let obj1 = {a: 1, b: 2};
let obj2 = {c: 3};
let mergedObj = {...obj1, ...obj2};

In object merging, if there are common properties, the latter one will override the earlier ones.

The Rest Operator

The Rest Operator looks exactly the same as the Spread Operator but is used in a different context. It is used to gather all remaining elements or arguments into an array. It is particularly useful in functions, where you might have an indefinite number of arguments.

function sum(...args) {
  return args.reduce((previous, current) => {
    return previous + current;

In this example, all the arguments passed to the sum function are gathered into an array called args.

Practical Applications and Use Cases

The Spread Operator can be used to pass the elements of an array as arguments to a function.

let numbers = [1, 2, 3];

The Rest Operator is frequently used in destructuring assignments to collect the remaining elements.

let [first, ...remaining] = [1, 2, 3, 4];
console.log(remaining); // Output: [2, 3, 4]

In React, the Spread Operator is often used to pass down properties.

let ComponentA = (props) => {
  return <ComponentB {...props} />;


How does the three dots operator simplify code in JavaScript?

The three dots operator simplifies code by providing an easy syntax for expanding elements in arrays and objects, as well as collecting a variable number of arguments into an array.

What are the two different uses of the three dots operator in JavaScript?

The two uses are the Spread Operator, which expands iterables, and the Rest Operator, which collects multiple elements into a single array.

How do I use the spread operator in JavaScript?

Use the spread operator by placing three dots before an iterable like an array or object. For example, let newArray = [...oldArray];.

Can I copy an array using the spread operator in JavaScript?

Yes, you can copy an array by using the spread operator. Example: let newArray = [...oldArray];.

Is it possible to merge arrays with the spread operator in JavaScript?

Yes, merging arrays is possible using the spread operator. Example: let mergedArray = [...array1, ...array2];.

What is the rest operator in JavaScript?

The rest operator is used to collect all remaining elements or arguments into an array.

How to combine arguments into an array with the rest operator in JavaScript?

You can combine arguments into an array in a function by using the rest operator. Example: function example(...args) { // code }.

Opt out or Contact us anytime. See our Privacy Notice

Follow us on Reddit for more insights and updates.

Comments (0)

Welcome to A*Help comments!

We’re all about debate and discussion at A*Help.

We value the diverse opinions of users, so you may find points of view that you don’t agree with. And that’s cool. However, there are certain things we’re not OK with: attempts to manipulate our data in any way, for example, or the posting of discriminative, offensive, hateful, or disparaging material.

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


Register | Lost your password?