Truthy&Falsy, OptionalChanining_JavaScript

miin·2021년 11월 16일
0

Java Script

목록 보기
31/35
post-thumbnail

truthy & falsy

  • 불린이 아니지만 불린처럼 읽힘

false

  • "", ''
  • 0
  • undefined
  • NaN
  • null
  • !true

truthy

  • [],{}
  • not !
  • !fasly
  • !falsy

! & !!

  • type을 boolean으로 변경해줌
    result.map(e=>e.id).filter(e=> !e) //false
    result.map(e=>e.id).filter(e=> !!e) //ture

Optional Chaining

?.

  • undefined이면 무시, 즉 참만 반환
  • 함수나 대괄호와 함께 동작하는 특별한 문법 구조체(syntax construct)이다
  • '앞'의 평가 대상이 undefined나 null이면 undefined를 반환하고, 그렇지 않으면 평가를 계속 진행한다.
  • 계속 연결해서 체인을 만들면 중첩 프로퍼티들에 안전하게 접근할 수 있다.

주의

  • 왼쪽 평가대상이 없어도 괜찮은 경우에만 선택적으로 사용해야 한다.
    (남용하지 말것, 에러를 조기에 발견하지 못하고 디버깅이 어려워질 수 있다)
  • ?.앞의 변수는 꼭 선언되어 있어야 한다(에러발생)
  • 앞에 평가대상에 값이 없으면 즉시 평가를 멈춘다. [단락평가(short-circuit)라고 함]

사용

  • 옵셔널 체이닝 문법 ?.은 세 가지 형태로 사용할 수 있다
  1. obj?.prop – obj가 존재하면 obj.prop을 반환하고, 그렇지 않으면 undefined를 반환함
  2. obj?.[prop] – obj가 존재하면 obj[prop]을 반환하고, 그렇지 않으면 undefined를 반환함
  3. obj?.method() – obj가 존재하면 obj.method()를 호출하고, 그렇지 않으면 undefined를 반환함

문법

obj?.prop
obj?.[expr]
arr?.[index]
func?.(args)

?? (물음표)

  • nullish 병합연산자(nullish coalescing operator). 여러 피연산자 중 그 값이 확정되어있는 변수를 찾는다
  • 왼쪽 값이 참이면 왼쪽값 아니면 오른쪽 값
  • ex) a ?? b -> a가 null도 아니고 undefined도 아니면 a 그 외에 b
  • '||'와 상당히 유사하지만 ||는 첫번째 truthy값을 반환하고,
    ??는 첫번째 정의된(defined)값을 반환한다

0개의 댓글