두 개의 피연산자가 모두 true로 평가될 때 true를 반환한다.
'Cat' && 'Dog' // Dog
Cat
이 Truthy 한 값이므로 Dog
를 반환합니다.
A && B
는 A가 Truthy 한 값이라면, B가 결과값이 됩니다. 반면 A가 Falsy 한 값이라면 결과는 A가 됩니다.
아래 예시를 살펴보자.
true && 'Dog' // Dog
false && 'Dog' // false
'Cat' && 'Dog' // Dog
null && 'Dog' // null
undefined && 'Dog' // undefined
'' && 'Dog' // ''
0 && 'Dog' // 0
1 && 'Dog' // Dog
1 && 1 // 1
두 개의 피연산자 중 하나만 true로 평가되어도 true를 반환한다.
A || B
는 A가 Truthy 한 값이라면, A가 결과값이 됩니다. 반면 A가 Falsy 한 값이라면 결과는 B가 됩니다.
아래 예시를 살펴보자.
true || 'Dog' // true
false && 'Dog' // Dog
'Cat' && 'Dog' // Cat
null && 'Dog' // Dog
undefined && 'Dog' // Dog
'' && 'Dog' // Dog
0 && 'Dog' // Dog
1 && 'Dog' // 1
1 && 1 // 1
단축 평가 표현식 평가 결과
true && anything anything
false && anything false
true || anything true
false || anything anything
어떤 조건이 Truthy 값(참으로 평가되는 값)일 때 무언가를 해야 한다면 논리곱(&&) 연산자 표현식으로 if문을 대체할 수 있다.
let done = true;
let message = '';
if (done) {
message = '완료';
}
// 단축 평가
// done이 true면 message에 '완료'를 할당
message = done && '완료';
어떤 조건이 Falsy 값(거짓으로 평가되는 값)일 때 무언가를 해야 한다면 논리합(||) 연산자 표현식으로 if문을 대체할 수 있다.
let done = false;
let message = '';
if (!done) {
message = '미완료';
}
// 단축 평가
// done이 false면 message에 '미완료'를 할당
message = done || '미완료';