JS에서 == 와 ===의 차이점에 대해서 알아보자
"==="는 엄격한 비교연산자 이고 "=="는 조금 덜 엄격한 연산자 라는 뜻이다.
쉽게 코드로 설명해보자
let a = 1;
let b = "1";
console.log(a===b) //false
console.log(a==b) //true
즉 ===는 값의 데이터 타입까지 비교 하기 떄문에 데이터 타입이 맞다면 true 아니면 false를 반환한다. a와b는 서로 데이터 타입이 다르기 때문에 false ==는 true 가 나온다.
==는 변수의 값을 기반으로 비교하고, ===는 변수의 데이터 유형(type)까지 비교한다.
만약에 배열이나 객체일 경우에는 어떨까??
배열을 선언하게 되면 각 배열의 메모리 주소를 참조한다.
메모리의 주소가 다르면 엄격한 ===은 서로 다르다고 false를 출력한다.
const a = [1,2,3];
const b = [1,2,3];
console.log(a===b)//false
console.log(a==b) //false
두 변수의 데이터 타입도 서로 같지만 서로 다른 메모리 주소를 바라보고 있기 때문에 false 출력! 객체도 마찬가지 이다.
const a = [1,2,3];
const b = [1,2,3];
const c = b;
console.log(b==c)//true
console.log(b===c)//true
변수 c는 b의 메모리 주소를 바라보고 있기 때문에 == 와 === 전부 true 를 출력한다.