용어 자체가 이리 어려우니 개념은 간단하고 매우 좋은 기능임에도 손에 잘.. 안붙습니다.
Optional Channing은 ?. 키워드로 사용되며 객체에 어떤 속성이 있다면 그 속성을 반환하고 없다면 undefined을 반환합니다. 즉 if 문으로 해당 속성을 검사할 필요가 없습니다. 이 Optional Channing의 예는 다음과 같습니다.
const person = { name: "Dip2K", company: { name: "GEOSERVICE", address: "Korea, Seoul" }}; console.log(person.company?.name); // GEOSERVICE console.log(person.skill?.language); // undefined
Optional Channing은 매서드 호출에 대해서도 사용할 수 있는데요. 객체에 어떤 매서드가 존재할 때 그 매서드를 호출해야 한다면 if 문으로 매서드 존재 여부를 검사할 필요 없이 다음처럼 하면 됩니다.
const obj = { getName() { console.log("Dip2K"); } }; console.log(obj.getName?.()); // Dip2K console.log(obj.getAge?.()); // undefined
결국 ?.은 바로 직전에 붙은 녀석이 존재하면 그 녀석을 반환하고 존재하지 않는 녀석이면 즉각 undefined를 반환하고 끝납니다.
다음은 Nullish Coalescing Operator입니다. ?? 키워드로 사용되며 ?? 키워드를 중심으로 왼쪽값이 명확히 null 또는 undefiend 일때 오른쪽의 값을 반환합니다. 명확히 null 또는 undefined이라는 의미는 0이나 빈문자열 등은 null 또는 undefiend로 해석되지 않습니다. 예는 다음과 같습니다.
let name = "Dip2K"; console.log(name ?? "Jackass"); // Dip2K let age = 0; console.log(age ?? 10); // 0 let last_name = undefined; console.log(last_name ?? "Jackson"); // Jackson
결국 이 이름만 거창한 녀석은 값이 있음? 없음 말고(undefined)입니다.