자바스크립트에서 값이 같은지를 알아보는 연산자는 2가지가 있다
혹시 ==과 === 차이를 모른다면 이 블로그를 끝까지 봐야 할것이다
일단 기본적으로 값이 같은지를 비교해서 같다면 true를 반환하고 다르다면 false를 반환한다
==
==은 타입과 상관 없이 단순하게 값이 같은지를 확인한다
console.log("1" == 1); //true
console.log("" == false); //true
첫번째 콘솔을 보면 타입이 다르지만 값은 같기 때문에 true를 반환한다
두번쨰 콘솔은 다르다로 생각할수 있지만 빈 문자열은 false와 같기 때문에 true를 반환한다
하지만 참조형 변수를 비교할때는 값이 저장된 메모리 주소가 같은지를 비교한다
const a = [1, 2, 3, 4];
const b = [1, 2, 3, 4];
console.log(a == b); //false
const c = b;
console.log(b == c); //true
===
===은 ==보다 더욱 엄격하게 같은지를 비교한다 이제는 값만 같다고 true를 반환하지 않고 값의 타입도 비교하여 타입과 값이 같아야지만 true를 반환한다
console.log("1" === 1); //false
console.log("hi" === "hi"); //true
console.log("" === false); // false
두번째 콘솔처럼 값과 타입까지 같아야지만 true를 반환한다
세번째 콘솔은 == 이었다면 true를 반환했겠지만 더욱 엄격하게 검사하므로 false를 반환하게 된다
참조형 변수를 ===으로 비교하면 ==과 똑같이 값이 저장된 메모리 주소가 같은지를 확인한다
마무리
오늘은 간단하게 동등 연산자를 알아보았다 사실 나는 여태까지 참조형 변수를 어떻게 비교하는지 모르고
원시형 변수를 비교하는 방법만 알고 있었다 이번 기회에 참조형 변수를 비교하는것도 새롭게 알게되어 뜻깊은것 같다
728x90
'JS, TS' 카테고리의 다른 글
복사에도 깊이가 있어? - 얕은 복사, 깊은 복사 알아보기 (0) | 2024.05.19 |
---|---|
Intersection Observer로 element 관찰하기🧐 (0) | 2024.05.08 |
type이랑 interface 뭐가 다른거였어...? - type과 interface 차이 알아보기 (0) | 2024.02.26 |
??? : 아저씨 번들링이 뭐에요 (1) | 2024.02.11 |
history API (0) | 2024.02.04 |