비교 연산자 '=='와 '==='의 차이

조성철 (JoSworkS)·2020년 3월 5일
0

TIL(Today I Learned)

목록 보기
29/73
post-thumbnail

JavaScript의 '같다'에는 '=='와 '===' 두 종류가 있다.

동등 연산자 '=='

동등 연산자는 두 피연산자의 자료형이 같지 않은 경우 같아지도록 변환한 후, 엄격 비교를 수행합니다. 피연산자가 모두 객체라면, JavaScript는 내부 참조를 보고, 둘 다 메모리의 같은 객체를 바라보고 있는지 판별합니다.
출처: MDN

좌우의 타입데이터 형태평가기준
같음string, number, boolean단순히 값이 같은가
같음array, object참고하는 곳이 같은가
같음null, undefined모두 true
다름string, number, boolean문자열, 논리형을 숫자로 변환해서 비교
다름object리터럴로 변환해서 비교
console.log('1' == 1)  // true
console.log(1 == true) // true
console.log(['a', 'b', 'c'] == ['a', 'b', 'c'])  // false 참고하는 곳이 다르다.
console.log('3.14e2' == 314) // true 부동소수점에 의해 '3.14e2'→'314'
console.log('0x10' == 16) // true '0x10'을 16진수로 표현

즉, 동등 연산자 '=='는 타입이 다르더라도 비교하는 두 값이 같다고 보기 위해 노력한다는 특성이 있다.

일치 연산자 '==='

일치 연산자는 자료형 변환 없이 두 연산자가 엄격히 같은지 판별합니다.
출처: MDN

console.log('1' === 1)  // false
console.log('3.14e2' === 314)  // false
console.log('0x10' === 16)  // false

위 코드에서 보다시피 '=='에서 true를 반환했지만 '==='은 false를 반환한다. 따라서 JavaScript로 애플리케이션을 개발할 때는 동등 연산자 '=='를 사용하면 개발자가 예측할 수 없는 버그를 유발할 수 있기 때문에 일치 연사자 '==='를 사용하는 편이 좋다.

참고자료

0개의 댓글