반응형
※ 이 글의 모든 예시는 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은 동일하지 않다.
반응형