본문 바로가기
Web/JS

[JS] 이중 등호(==)와 삼중 등호(===)의 차이

by 양파맛슬러시 2023. 11. 21.
반응형

※ 이 글의 모든 예시는 Mozilla를 참고하였다.

[JS] 이중 등호와 삼중 등호

 

 

JS는 값 비교 연산을 위해 두 가지 등호를 제공한다.

모두 두 값의 비교를 수행하지만 그 형태가 다르게 나타난다.

 

 

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

'느슨한 동등'을 표현한다.

두 값의 형식이 다를 경우에 형 변환을 하여 비교한다.

이는 'true'로 이끌어내는 범위를 넓혀준다.

 

0 == false	// true

"" == false	// true

"" == 0   	// true

'1' == 1	// true

[1, 2] == '1,2'	// true

 

'느슨한 동등'을 통한 비교는 예상하지 못한 값을 도출할 수 있기 드물게 사용된다.

개발자의 의도에 따라 사용될 수 있는데 일반적으로 0, "", false를 비교할 때에 사용된다.

 

 

=== (일치 연산자, Strict equality operator)

'엄격한 동등'을 표현한다.

동등 연산자와는 다르게 형 변환을 하지 않는다.

두 값에 대한 정확한 비교를 끌어낼 수 있다.

 

0 === false 	// false

"" === false	// false

"" === 0    	// false

'1' === 1   	// false

[1, 2] === '1,2' // false

 

'엄격한 동등'은 항상 예상된 결과를 도출하기 때문에 대부분의 비교 상황에서 사용된다.

 

 

번외

비교 연산 할 때에 결과가 헷갈릴 만한 것들을 정리하였다.

 

+0 === -0        	// true

null == undefined	// true

null === undefined	// false

null == false    	// false

0 == null        	// false

undefined == false	// false

NaN === NaN       	// false

 

null과 undefined는 느슨한 동등에서 참이다.

(둘 다 '없음'을 표현한다.)

 

NaN과 NaN은 엄격한 동등에서도 거짓이다.

NaN은 "Not A Number"로 계산할 수 없는 상황을 나타낸다.

1-"abc"와 0/0는 모두 NaN이지만 결코 두 값이 같다고 할 수 없다.

어떤 하나의 값을 특정하지 못하기 때문에 NaN과 NaN은 동일하지 않다.

반응형