티스토리 뷰

Javascript 동일성 비교 시 ==, === 차이점


==는 두 개의 입력값을 같은 type으로 변환하여 같은 값을 가지고 있는지 비교작업을 수행합니다. 이는 의미론적 비교방법이라고 할 수 있습니다. 반면, ===는 type 변환을 하지 않은 상태로 비교작업을 수행하며 type이 틀릴경우 false를 반환합니다.


"1" == 1 // true

"1" === 1 // false

null == undefined // true

null === undefined // false


동일성을 비교하는 방법중에 또다른 방법이 있습니다. 일부 최신 브라우저에서 지원하고 있는 Object.is 라는 함수 입니다. 기본적으로 === 와 같다고 볼 수 있지만, 일부 특수한 값에 대하여 다르게 동작합니다.


NaN(Not a Number)는 연산중에 발생할 수 있는 특수한 값으로 0을 0으로 나누었을 때 발생하는 값 입니다. Javascript에서 NaN에 대한 비교값(==, ===)은 자기 자신(NaN)을 포함한 모든 값과 틀린 것으로 간주합니다. 하지만, Object.is 함수는 NaN과 NaN 비교 시 true 값을 리턴해 줍니다.


NaN === NaN // false

NaN == NaN // false

Object.is(NaN, NaN) // true


기호를 가진 0의 경우에도 Object.is는 다르게 동작합니다. ==, === ㅂ교시 0, -0, +0은 같은 값으로 판단되지만, Obejct.is로 비교시 다른 값으로 판단해 줍니다.


0 == +0 && +0 == -0 // true

0 === +0 && +0 === -0 // true

Object.is(-0, +0) // false


참고로 무한대를 나타내는 Infinity 키워드의 경우 3가지 비교법 모두 true를 나타냅니다.



'개발 > JavaScript' 카테고리의 다른 글

RequireJS  (0) 2017.02.27
Promise 간단 사용법  (0) 2017.01.24
Open Source - js.cookie  (0) 2016.04.22
주소창의 url 변경 방법  (0) 2016.04.11
Front-End 개발 환경  (0) 2016.03.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함