==와 ===의 차이점은 무엇일까요?의도: 자바스크립트의 기본 문법을 확인하는 질문
팁: nullish와 연계하여 대답하면 좋다.
나의 답안
==(느슨한 동등 비교)와===(엄격한 동등 비교)는 값을 비교할 때 사용하는 연산자이지만, 두 가지는 형 변환 여부에서 큰 차이가 있습니다.
==(느슨한 동등 비교) 연산자는 비교 전에 자동으로 타입을 변환해서 값을 비교합니다.
예를 들어, 문자열 "5"와 숫자 5를 비교할 때, 문자열 "5"를 숫자 5로 바꾼 뒤 비교하기 때문에true가 됩니다.반면
===(엄격한 동등 비교) 연산자는 타입까지 완전히 동일해야만true를 반환합니다.
그래서 문자열 "5"와 숫자 5는 타입이 다르기 때문에false가 됩니다.실무에서는 예측 불가능한 형 변환으로 인한 버그를 방지하기 위해
===를 기본적으로 사용합니다.
주어진 답안 (모범 답안)
비교할 때 판단이 다릅니다.
간단히 요약하자면==(느슨한 동등 비교)는 타입은 다르지만 값이 같을 때, 예를 들어 문자열 1과 숫자 1을 비교하면 같다고 판단합니다.
그래서 숫자 0과 nullish 값을 이 연산자를 이용해 비교하면 같다고 판단하여 true가 나올 것입니다.그리고
===(엄격한 동등 비교)는 좀 더 엄격하게 타입과 값을 모두 비교합니다.
그래서 문자열 1과 숫자 1을 비교하면 다르다고 뜰 것입니다.
저는 보통 엄격한 비교를 위해===를 더 선호해 사용하는 편입니다.
== (느슨한 비교, Loose Equality)console.log(5 == "5"); // true (문자열 "5"가 숫자 5로 변환된 후 비교됨)
console.log(0 == false); // true (false가 숫자 0으로 변환됨)
console.log(null == undefined); // true (특수한 경우로, 둘이 같다고 간주됨)
console.log([] == false); // true (빈 배열이 숫자 0으로 변환됨)
console.log(" " == 0); // true (공백 문자열이 숫자 0으로 변환됨)
console.log("" == 0); // true (빈 문자열이 숫자 0으로 변환됨)=== (엄격한 비교, Strict Equality)true를 반환한다.false이다.console.log(5 === "5"); // false
console.log(0 === false); // false
console.log(null === undefined); // false
console.log([] === false); // false
console.log(" " === 0); // false
console.log(5 === 5); // true==을 쓰고, 언제 ===을 써야 할까?===을 기본적으로 사용하는 게 좋다.==은 특별한 경우에만 쓴다.
예: null == undefined가 true인 특성을 이용할 때
function check(value) {
if (value == null) { // value가 null이거나 undefined일 경우
console.log("값이 없습니다.");
}
}
check(null); // "값이 없습니다."
check(undefined); // "값이 없습니다."
value === null || value === undefined로 명확히 쓰는 게 더 좋다.