JavaScript의 ==와 ===의 차이

eeensu·2023년 8월 19일
0

javascript

목록 보기
12/31
post-thumbnail

일반적으로 프로그래밍 언어 문법의 큰 틀은 비슷하다. 그래서 한 언어에 익숙해지면 다른 언어도 쉽게 배울 수 있다. 예를 들어, 프로그래밍을 하면서 변수 값의 같음을 비교하려면 == 연산자를 이용해서 '같음 여부'를 비교할 수 있다. 대부분의 언어에서 사용하는 것이기도 하다.

하지만 모든 언어가 완벽하게 동일한 문법을 가지진 않는다. 각 언어만의 독특한 문법들 역시 존재한다. 일반적으로 js 프로그래밍하다 보면, 동등함을 비교할 때 대부분 == 가 아닌 ===를 사용한다. js의 == 연산자는 다른 언어들과 다른 특징을 가지고 있기 때문이다. 이번 포스트에서는 js에서의 값 비교 연산자인 =====에 대해 자세히 살펴보자.




== (동등 연산자, Loose Equality)

== 연산자는 두 값이 "동등" 한지를 비교한다. 비교 할때, 값의 데이터 타입이 다르다면 자동으로 타입 변환을 시도하여 비교한다. 따라서 타입이 다른 값도 같은 값으로 간주될 수 있으며 개발자가 의도하지 않은 결과가 나올 수 있다.

console.log(1 == '1'); 							 // true (값은 같지만 타입이 다름)
console.log(null == undefined);				     // true (특별한 규칙으로 인해 동등하게 간주됨)


=== (일치 연산자, Strict Equality)

=== 연산자는 두 값이 "일치" 하는지를 엄격하게 비교한다. 값과 데이터 타입 모두를 비교한다.
값을 엄격하게 비교하므로, 예상치 못한 타입 변환으로부터 자유롭다. nullundefined=== 로 비교 시 서로 다르다.

console.log(1 == '1'); 	 						// false (값은 같지만 타입이 다름)
console.log(null == undefined);					// false (값은 없지만 타입이 다름)

요약하면, ==와 === 연산자 모두 값의 비교에 사용되며, 타입 변환이 있는지 없는지에 따라 동작이 달라진다. 또한 복합 데이터 타입(객체 등)의 경우 내용이 같아도 별도의 참조인 경우 false가 반환될 수 있다. 그러므로 프로그래밍 시 예상치 못한 결과가 나타나는 것을 방지하기 위해 값 비교에는 === 연산자를 사용하는 것이 권장된다.

profile
안녕하세요! 26살 프론트엔드 개발자입니다! (2024/03 ~)

0개의 댓글