React 동등 비교를 공부하며 Javascript 동등 비교에 대해 다시 정리했다
자바스크립트 동등 비교
- 원시타입(primitive type)과 객체타입(object/reference type)이 존재
원시타입
- boolean, null, undefined, number, string, symbol, bigint
boolean
- true와 false 외에도 해당 논리로 취급되는 값이 존재
- falsy : 조건문 내부에서 false로 취급되는 값
- 0, undefind, 빈 문자열 등
- truthy
- 1
- 중요한 점은 객체({}, [])는 참조를 하기 때문에 true 값으로 취급
Object.is
- ES6부터 ‘===’ 동등 비교가 가지는 한계를 극복하기 위해 만들어짐
- 두 값이 같은 값인지 결정함
- 둘 다 undefined
- 둘 다 null
- 둘 다 true 또는 둘 다 false
- 같은 순서로 같은 문자에 같은 길이인 문자열
- 같은 객체 (같은 객체를 참조)
- 숫자인 경우
- 둘 다 +0
- 둘 다 -0
- 둘 다 NaN
- 위의 경우 빼고, 같은 값
- ‘==’은 비교할 수 있게 양쪽 값을 강제로 형변환(type casting)함. 하지만 object.is는 ===와 같이 형변환 과정이 없음
- ‘===’ vs Object.is
- -0 === +0 // true Object.is(-0, +0) // false Number.NaN === NaN // false Object.is(Number.NaN, NaN) // true NaN === 0 / 0 // false Object.is(NaN, 0 / 0) // true
[참조] React Deep Dive
'TIL > javascript' 카테고리의 다른 글
Babel과 Webpack을 이용한 ES6+/ES.NEXT 개발 환경 구축 (0) | 2024.02.18 |
---|