The spread operator, denoted by three dots `(…)` in JavaScript, is used to expand iterable objects into multiple elements. It is mainly used in array literals, function calls, and destructuring assignments.
For example, it can be used to combine arrays:
```
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let combined = […arr1, …arr2]; // [1, 2, 3, 4, 5, 6]
```
Or to clone an array:
```
let arr = [1, 2, 3];
let arrCopy = […arr]; // [1, 2, 3]
```
In a function call, it can be used to pass array elements as separate arguments:
```
let nums = [1, 2, 3];
console.log(Math.max(…nums)); // 3
```
And in destructuring assignments, it can be used to unpack elements from arrays or properties from objects:
```
let [first, …rest] = [1, 2, 3, 4, 5];
console.log(first); // 1
console.log(rest); // [2, 3, 4, 5]
```
```
let obj = {a : 1, b: 2, c: 3};
let {a, …others} = obj;
console.log(a); // 1
console.log(others); // {b: 2, c: 3}
```