JS는 객체 프로퍼티 키로 문자형과 심볼형만 허용한다.
심볼형이 뭘까?
심볼은 "유일한 식별자"를 만들고 싶을 때 사용한다.
let id = Symbol()
let id = Symbol("id)
: id 라는 설명이 붙는다.
솔직히 잘 모르겠다 .. 실무에서도 많이 사용하지 않는다하고..
다음에 기회가 되면 다시 공부를 해보고 실무에 적용해 볼 수 있으면 좋겠다..
?.
옵셔널 체이닝을 사용하면 프로퍼티가 없는 중첩 객체를 에러없이 안전하게 접근할 수 있다.
ex)
let user = {}
console.log(user &&user.address &&user.address.name)// undefined
옵셔널 체이닝이 없을때는 이 방법(&&)을 사용해서 에러를 발생하지 않게 하였다.
?.
는 앞의 평가대상이 undefined / null 이면 undefined를 반환한다.
=> 최신문법 user?.address?.name
객체끼리 연산, 원시형을 파라미터로 받는 함수에 인자로 넘기는 경우에는 자동 형 변환이 일어난다.
객체는 논리평가시 true를 받는다 .
객체형 평가는 세 종류로 구분되는데 , hint 라고 불리는 값이 기준이 된다 (hint = 목표로 하는 자료형)
Symbol.toPrimitive
라는 내장 심볼을 이용해 객체가 원시형으로 변환될 때, hint에 따라 어떻게 변환되는지 지정가능하다.
객체에 Symbol.toPrimitive
가 없다면, JS 엔진은 toString => valueOf 를 호출하여 진행한다.