Loose equality, with type conversion (==) (변수의 값만 비교)

const stringFive = '5';
const numberFive = 5;

console.log(stringFive == numberFive); // true
console.log(stringFive != numberFive); // false

Strict, no type conversion (===) (변수의 타입과 값을 비교)

const stringFive = '5';
const numberFive = 5;

console.log(stringFive === numberFive); // false
console.log(stringFive !== numberFive); // true

Object equality by reference

const ellie1 = { name: 'ellie' };
const ellie2 = { name: 'ellie' };
const ellie3 = ellie1;

console.log(ellie1 == ellie2);  // false
console.log(ellie1 === ellie2); // false
console.log(ellie1 === ellie3); // true
// ellie1 - ref1 (name: ellie)
// ellie2 - ref2 (name: ellie)
// ellie3 - ref1 (name: ellie)
// -> 객체는 주소값을 반환하기 때문이다.

확인

console.log(0  == false);  // ture
console.log(0  === false); // false
console.log('' == false);  // true
console.log('' === false); // false
console.log(0 == '');      // true
console.log(null == undefined);  // true
console.log(null === undefined); // false