논리합 연산자 (||)
좌변의 피연산자가 falsy한 값 (false, 0, "", null, undefined, NaN) 일 때만 우변의 피연산자를 평가한다.
function getUsername(user) {
return user.name || '신원미상';
}
console.log(getUsername({ name: '르탄이' })); //르탄이
console.log(getUsername({})); //신원미상
논리곱 연산자(&&)
논리곱 연산자 &&는 좌변이 truthy일 때만 우변을 평가한다.
// 사용자가 로그인 상태이면 환영 메시지를 출력
let loggedIn = true;
let username = '르탄이';
loggedIn && console.log('환영합니다! ' + username); //환영합니다! 르탄이
loggedIn = false;
loggedIn && console.log('환영합니다! ' + username); //아무것도 출력되지 않음
Optional Chaining (?.)
객체의 속성에 접근할 때 해당 경로에 속성이 존재하지 않아도 에러를 발생시키지 않고, 대신 undefined를 반환한다.
const user = {
profile: {
name: "르탄이",
details: {
age: 30,
location: "서울시 강남구"
}
}
};
console.log(user.profile.details.age); // 출력: 30
const user = {};
console.log(user.profile.details.age); // Error!!
console.log(user.profile?.details?.age); // 출력: undefined
Null 병합 연산자(??)
??
연산자는 좌변이 null이나 undefined일 경우에만 우변을 평가합니다.
let userLocation = null;
console.log(userLocation ?? 'Unknown location'); // 출력: Unknown location
userLocation = 'Seoul';
console.log(userLocation ?? 'Unknown location'); // 출력: Seoul
// libs/math.js
module.exports = {
add: function(x, y) {
return x + y;
},
subtract: function(x, y) {
return x - y;
}
};
// app.js
const math = require('./libs/math');
console.log(math.add(2, 3)); // 5
// math.js
export const add = (a, b) => a + b;
export const multiply = (a, b) => a * b;
export const ONE = 1;
export const sample = {
one: 1,
two: 2
}
// app.js
import { add, multiply, ONE, sample } from './math.js';
console.log(add(2, 3)); //5
console.log(multiply(2, 3)); //6
console.log(ONE); //1
console.log(sample.two); //2