javascript ... operator

JavaScript
//The OR operator in Javascript is 2 verticals lines: ||

var a = true;
var b = false;

if(a || b) {
	//one of them is true, code inside this block will be executed
}let a = { a: 0, b: 1 };
let b = { b: 2, c: 3 };
let c = { ...a, ...b };

console.log(c);

output -> {a: 0, b: 2, c: 3}//The operator ... is part of the array destructuring.
//It's used to extract info from arrays to single variables.
//The operator ... means "the rest of the array".
var [head, ...tail] = ["Hello", "I" , "am", "Sarah"];
console.log(head);//"Hello"
console.log(tail);//["I", "am", "Sarah"]

//It can be used to pass an array as a list of function arguments
let a = [2,3,4];
Math.max(a) //--> NaN
Math.max(...a) //--> 4function sum(x, y, z) {
  return x + y + z;
}

const numbers = [1, 2, 3];

console.log(sum(...numbers));
// expected output: 6

console.log(sum.apply(null, numbers));
// expected output: 6

/* Spread syntax (...) allows an iterable such as an array expression or string 
to be expanded in places where zero or more arguments (for function calls) 
or elements (for array literals) are expected, or an object expression to be 
expanded in places where zero or more key-value pairs (for object literals) 
are expected. */

// ... can also be used in place of `arguments`
// For example, this function will add up all the arguments you give to it
function sum(...numbers) {
  let sum = 0;
  for (const number of numbers)
    sum += number;
  return sum;
}

console.log(sum(1, 2, 3, 4, 5));
// Expected output: 15

// They can also be used together, but the ... must be at the end
console.log(sum(...[4, 5, ...numbers]));
// Expected output: 15
const age = 20;

console.log(`I am ${age} years old.`); // not my real agelet obj1 = { foo: 'bar', x: 42 };
let obj2 = { foo: 'baz', y: 13 };

let clonedObj = { ...obj1 };
// Object { foo: "bar", x: 42 }

let mergedObj = { ...obj1, ...obj2 };
// Object { foo: "baz", x: 42, y: 13 }
Source

Also in JavaScript: