TIL/javascript

Javascript 동등 비교

에리조나진생 2024. 4. 3. 23:20

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