JavaScript에서 "=="와 "==="는 값의 동등성을 비교하는 데 사용되는 비교 연산자다.
"=="(동등 연산자)는 두 개의 값을 비교할 때, 타입 강제 변환(type coercion)을 수행한 후에 비교를 수행한다. 이 연산자는 값이 동등하면 true
를 반환하고, 동등하지 않으면 false
를 반환한다. 타입 강제 변환은 자동으로 수행되므로, 서로 다른 데이터 타입의 값을 비교할 때 타입을 일치시키기 위해 변환이 이루어진다. 예를 들어, 숫자와 문자열을 비교할 때 숫자를 문자열로 변환하여 비교한다.
"==="(일치 연산자)는 두 개의 값을 비교할 때, 값과 함께 데이터 타입도 엄격하게 비교한다. 이 연산자는 값과 데이터 타입이 모두 동일한 경우에만 true
를 반환하고, 그 외의 경우에는 false
를 반환한다. 타입 강제 변환이 없으므로, 예기치 않은 결과를 방지할 수 있다.
다음은 "=="와 "==="의 차이를 몇 가지 예시로 설명한다.
console.log(10 == "10"); // true, 값은 동일하므로 타입 강제 변환 후 비교
console.log(10 === "10"); // false, 값은 동일하지만 타입이 다름
console.log(true == 1); // true, true는 1로 타입 강제 변환됨
console.log(true === 1); // false, 불리언과 숫자는 다른 타입
console.log(null == undefined); // true, 값이 비슷하여 타입 강제 변환 후 비교
console.log(null === undefined); // false, null과 undefined는 다른 타입
일반적으로 데이터 타입과 값을 엄격하게 비교해야 할 때는 "===" 연산자를 사용하는 것이 좋다. 타입 강제 변환이 예기치 않은 결과를 가져올 수 있으므로, 의도하지 않은 동작을 방지하고 정확한 비교를 위해 "==="를 사용하는 것이 권장된다.
참고
Chat GPT