&&
and ||
operators actually return the value of one of the specified operands, so if these operators are used with non-Boolean values, they will return a non-Boolean value.논리 연산자는 주로 boolean값과 쓰이면서 boolean값을 반환하는데, 사실은 피연산자 중 하나의 값을 반환하기 때문에, boolean이 아닌 값과 함께 쓰이는 경우에는 boolean이 아닌 값도 반환할 수 있음.
작동방식
Operator | Syntax | Description |
---|---|---|
Logical AND (& ) | expr1 && expr2 | If expr1 can be converted to true, returns expr2; else, returns expr1. |
Logical OR (||) | expr1 || expr2 | If expr1 can be converted to true, returns expr1; else, returns expr2. |
Logical NOT (!) | !expr | Returns false if its single operand can be converted to true; otherwise, returns true. |
false로 취급되는 것들
=> null
; NaN
; 0
; -0
; empty string (""
or ''
or ` `
); undefined
; 이외에는 모두 초기값이 true
로 설정됨.
logical expressions are evaluated left to right
(some falsy expression)
&& expr
is short-circuit evaluated to the falsy expression
;
(some truthy expression)
|| expr
is short-circuit evaluated to the truthy expression
.
Operator precedence // 연산자 우선순위
&&
operator is executed before the ||
operator
true || false && false // returns true, because && is executed first
(true || false) && false // returns false, because operator precedence cannot apply
&&
(논리 AND) 연산자의 예제
a1 = true && true // t && t returns true
a2 = true && false // t && f returns false
a3 = false && true // f && t returns false
a4 = false && (3 == 4) // f && f returns false
a5 = 'Cat' && 'Dog' // t && t returns "Dog"
a6 = false && 'Cat' // f && t returns false
a7 = 'Cat' && false // t && f returns false
a8 = '' && false // f && f returns ""
a9 = false && '' // f && f returns false
||
(논리 OR) 연산자의 예제
o1 = true || true // t || t returns true
o2 = false || true // f || t returns true
o3 = true || false // t || f returns true
o4 = false || (3 == 4) // f || f returns false ***
o5 = 'Cat' || 'Dog' // t || t returns "Cat"
o6 = false || 'Cat' // f || t returns "Cat"
o7 = 'Cat' || false // t || f returns "Cat"
o8 = '' || false // f || f returns false
o9 = false || '' // f || f returns ""
o10 = false || varObject // f || object returns varObject
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators