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의 경우, 아무 값도 반환하지 않음