My Boundary As Much As I Experienced

JS) 선택적 체이닝(Optional Chaining) 본문

FrontEnd/Javascript(Vanilla)

JS) 선택적 체이닝(Optional Chaining)

Bumang 2023. 7. 18. 15:42

선택적 체이닝은 있을수도 있고, 없을 수도 있는 데이터를 다룰 때 유용하다.

 

아래와 같은 user 2명이 있다고 해보자.

const userA = {
  name: "bumang",
  age: 20,
  address: {
    country: "korea",
    city: "gimpo",
  },
};

const userB = {
  name: "neo",
  age: 20,
};

userA는 address라는 속성과 값을 가지고 있지만, userB는 가지고 있지 않다.

 

 

이 상황에서 getAddress라는 함수를 만들어서 사용하고자 할 때,

function getAddress(user) {
  return user.address.city;
}


console.log("!", getAddress(userB));
//reference error 발생!

userB의 Address를 반환받고 싶은데 반환 받을 수가 없다...

 

 

데이터가 이렇게 주어질 경우에도.. 레퍼런스 에러를 내지 않으려면

function getCity(user) {
  return user.address?.city || "주소가 없습니다."; // or 선택자로 좌변이 undefined일 시 안내 문구가 나오게 할 수 있다.
}

console.log(getCity(userA)); // Gimpo
console.log(getCity(userB)); // undefined

선택적 체이닝을 이용할 수 있다. 존재하지 않을 가능성이 있는 문제적인 속성 점 선택자에 ? 마크를 붙임으로써

이 값이 없을 경우에 undefined를 반환하도록 만들 수 있다.

(ex .address?.city)