==

// 숫자와 문자
console.log(1 == "1") // true

// 공백(문자) 와 0
console.log('' == 0); // true

// 배열 비교
console.log(0 == []); // true
console.log("0" == []); // false
console.log("" == []); // true
console.log([1] == 1); // true
console.log(["1"] == 1); // true
console.log(["1"] == "1"); // true

// 숫자와 boolean 타입
console.log(0 == false) // true
console.log(1 == true) // true

// 문자와 boolean 타입
console.log(true == "true") // false

// null과 undefined
console.log(null == undefined) // true

===

// 숫자와 문자
console.log(1 === "1") // false

// 공백(문자) 와 0
console.log('' === 0); // false

// 배열 비교
console.log(0 === []); // false
console.log("0" === []); // false
console.log("" === []); // false
console.log([1] === 1); // false
console.log(["1"] === 1); // false
console.log(["1"] === "1"); // false

// 숫자와 boolean 타입
console.log(0 === false) // false
console.log(1 === true) // false

// 문자와 boolean 타입
console.log(true === "true") // false

// null과 undefined
console.log(null === undefined) // false

결론

두 비교 연산자의 차이는 알고 있었지만 0 == [], null == undefined 등 전혀 다른 데이터도 true로 반환될 수 있다는 것을 알게 되어 조금 충격이 크다.

그러면서 “0” == [] 의 결과는 false인 것도 정말 당황스러운 내용이었다..

의도한 대로 굴러가기 위해서는 === 을 생활화하자🥲