const obj1 ={name : '🐶'};
const obj2 ={name : '🐱', owner : 'Ellie'};
if (obj1 && obj2) {
console.log('둘다 true!');
}
let result = obj1 && obj2; // boolean 평가기때문에, 첫번째 값이 true이므로, obj2의 값만 반환
console.log(result); // { name: '🐱', owner: 'Ellie' }
result = obj1 || obj2; // boolean 평가기때문에, or에 대한 평가 결과로 obj1가 true이므로 obj1 값만 반환
console.log(result); // { name: '🐶' }
활용예
function changeOwer(animal){
if(!animal.owner) {
throw new Error('주인이 있음')
}
animal.owner = '바뀐주인!';
}
function makeNewOwner(animal){
if(animal.owner) {
throw new Error('주인이 없음')
}
animal.owner = '새로운주인!';
}
obj1.owner && changeOwer(obj1);
obj2.owner && changeOwer(obj2);
console.log(obj1); // { name: '🐶' }
console.log(obj2); // { name: '🐱', owner: '바뀐주인!' }
obj1.owner || makeNewOwner(obj1); // 앞에 조건이 false이니까, 뒤에 function 반환
obj2.owner || makeNewOwner(obj2); // 앞에 조건이 true이니까, 그대로 반환
console.log(obj1); // { name: '🐶', owner: '새로운주인!' }
console.log(obj2); // { name: '🐱', owner: '바뀐주인!' }
let item // = {price: 1}; // TypeError: Cannot read properties of undefined (reading 'price')
const price = item && item.price; // undefined
console.log(price);
//기본값을 설정
//default parameter는 null과 undefined인 경우에만 값을 반환
// || falshy한 경우 설정(할당) 0, -0, null, undefined, '' 등
function print(message = 'Hi'){
//const text = message || 'Hello'
console.log(message);
}
print('안녕!');
print(); // null -> Hi를 반환
print(''); // default parameter의 경우, 아무 값도 반환하지 않음
function print(message = 'Hi'){
const text = message || 'Hello'
console.log(text);
}
print('안녕!');
print(); // null -> default parameter 'Hi'를 반환
print(''); // default parameter의 경우, 아무 값도 반환하지 않음