본문 바로가기

JavaScript

[JavaScript] ==과 === 차이

자바스크립트에는 눈으로 보기엔 비슷하지만, 매우 다른 동등 비교연산자가 두개 있다. 

바로 == 와 ===이다. 

 

=== 동등 비교연산자

자바스크립트에서 === 연산을 사용할 때, 엄격한 동등성을 비교한다. 

엄격한 동등성이란 타입과 값이 둘 다 같아야 한다는 이야기다. 

5 === 5
// true

숫자 5 두개를 비교했다. 둘다 숫자 타입이며 5라는 같은 값을 가지고 있어 true가 반환되었다. 

 

55 === "55"
// false

숫자 55와 문자열 55를 비교해보았다. 두 개의 피연산자는 같은 값을 가지고 있지만 다른 타입을 가지고 있다. 

 

즉, ===은 타입과 값이 모두 같아야지만 true를 반환한다. 

 

== 동등 비교연산자 

자바스크립트에서 == 연산자를 쓰는 목적은 느슨한 동등 비교를 위함이다. 

== 연산자는 강제 형변환을 수행한다. 

 

강제 형변환이란, 동등 연산자로 비교하기 전에 피연산자들을 공통 타입으로 만드는 행위를 말한다. 

 

55 === "55"  
// false

55와 "55"는 엄격하게 보면 같은 값을 가지고 있지만 다른 타입이기 때문에 같지 않다. 

하지만, 느슨한 동등 비교로 테스트한다면 어떤 결과가 나올까? 

55 == "55"
// true

true 값을 얻게 된다. 이런 현상이 일어난 이유는 강제 형변환 때문이다. 

자바스크립트가 두 피연산자를 동등한 타입으로 변환 후 값을 비교하기 때문이다. 

반응형