앞의 값이 truthy, falsy(falsy한 값 : false, 0, "", null, undefined, NaN)한지에 따라 뒤의 값을 평가한다. 앞의 값이 falsy한 값일 경우 일 때 우변의 피연산자 값이 반환되고, 앞의 값이 truthy한 값일 경우, 그 값이 바로 결과값으로 반환된다.
// 유저 정보가 제공되지 않았을 때 기본 이름 제공
function getUsername(user) {
return user.name || '신원미상';
}
console.log(getUsername({ name: 'verdantgreeny' })); //verdantgreeny
console.log(getUsername({})); //신원미상
논리곱 연산자는 앞의 값이 truthy일 때만 우변의 값을 반환한다.
// 사용자가 로그인 상태이면 환영 메시지를 출력
let loggedIn = true;
let username = 'verdantgreeny';
loggedIn && console.log('환영합니다! ' + username); //환영합니다! 르탄이
loggedIn = false;
loggedIn && console.log('환영합니다! ' + username); //아무것도 출력되지 않음
객체의 속성에 접근할 때 속성이 null 혹은 undefined인 경우 에러를 발생시키지 않고, undefined를 반환한다. 오류를 발생시키지 않기 때문에, 객체의 중첩된 속성에 안전하게 접근할 수 있다.
const data = {
user: {
name: 'verdantgreeny',
details: {
age: 30,
location: "서울",
}
},
greet: function() {
return 'Hello!';
}
};
// Optional Chaining 사용
console.log(data.user?.details?.age); // 30
console.log(data.user?.details?.language); // undefined
console.log(data.admin?.details?.age); // undefined
console.log(data.greet?.()); // 'Hello!'
console.log(data.goodbye?.()); // undefined
?? 연산자는 좌변이 null이나 undefined일 경우에만 우변을 평가한다. null 또는 undefined가 아닌 falsy 값들을 유효한 값으로 처리하고 싶을 때 사용된다.
// 사용자의 위치 설정이 없으면 기본 위치를 제공
let userLocation = null;
console.log(userLocation ?? 'Unknown location'); // 출력: Unknown location
userLocation = 'Seoul';
console.log(userLocation ?? 'Unknown location'); // 출력: Seoul
// 사용자 입력이 0인 경우에도 0을 유효한 값으로 취급
const temperature = 0;
console.log(temperature ?? 25); // 출력: 0