In case of non primitive types (e.g objects) they are compared by reference also holds true for abstract equality operator i.e "==",
its not only true for strict equality operator i.e "===".
e.g
let obj = {x:1};
let obj1 = {x:1};
let obj2 = obj;
console.log(obj == obj1);
console.log(obj === obj1);
console.log(obj2 == obj);
console.log(obj2 === obj);
let arr = [1,2,3];
let arr1 = [1,2,3];
let arr2 = arr;
console.log(arr == arr1);
console.log(arr === arr1);
console.log(arr2 == arr);
console.log(arr2 === arr);
In case of non primitive types (e.g objects) they are compared by reference also holds true for abstract equality operator i.e "==", its not only true for strict equality operator i.e "===".
e.g
let obj = {x:1}; let obj1 = {x:1}; let obj2 = obj; console.log(obj == obj1); // false since obj and obj1 points to //different objects console.log(obj === obj1); // false as expected console.log(obj2 == obj); // true console.log(obj2 === obj); // true let arr = [1,2,3]; let arr1 = [1,2,3]; let arr2 = arr; console.log(arr == arr1); // false console.log(arr === arr1); // false console.log(arr2 == arr); // true console.log(arr2 === arr); // true