비교 연산자는 두 피연산자의 값을 비교하고 이들이 형성하는 문이 true인지 false인지 평가합니다. 다음 예에서는 엄격한 등식 연산자(===)를 사용하여 두 피연산자(표현식 2 + 2 및 값 4)를 비교합니다. 표현식의 결과와 숫자 값 4이 동일하므로 이 표현식은 true로 평가됩니다.
2 + 2 === 4
> true
유형 변환 및 등식
가장 자주 사용되는 두 가지 비교 연산자는 느슨한 등식의 경우 ==이고 엄격한 등식의 경우 ===입니다. ==는 가능하면 피연산자를 일치하는 데이터 유형으로 강제하여 두 값 간의 느슨한 비교를 실행합니다. 예를 들어 숫자 값과 문자열 값을 비교하더라도 2 == "2"는 true를 반환합니다.
2 == 2
> true
2 == "2"
> true
!=도 마찬가지입니다. !=는 비교되는 피연산자가 대략적으로 같지 않은 경우에만 true을 반환합니다.
2 != 3
> true
2 != "2"
> false
=== 또는 !==를 사용하는 엄격한 비교는 유형 변환을 실행하지 않습니다. 엄격한 비교가 true로 평가되려면 비교되는 값의 데이터 유형이 같아야 합니다. 따라서 2 == "2"는 true를 반환하지만 2 === "2"는 false를 반환합니다.
2 === 3
> false
2 === "2"
> false
자동 변환으로 인해 발생할 수 있는 모호성을 없애려면 가능하면 ===를 사용하세요.
| 연산자 | 설명 | 사용 | 결과 |
|---|---|---|---|
| === | 엄격히 같음 | 2 === 2 | true |
| !== | 엄격히 같지 않음 | 2 !== "2" | true |
| == | 같음 (또는 '대략 같음') | 2 == "2" | true |
| != | 같지 않음 | 2 != "3" | true |
| > | 초과 | 3 > 2 | true |
| >= | 이상 | 2 >= 2 | true |
| < | 미만 | 2 < 3 | true |
| <= | 이하 | 2 <= 3 | true |
참과 거짓
JavaScript의 모든 값은 암시적으로 true 또는 false이며, '대략적인 등식' 비교자를 사용하여 상응하는 불리언 값으로 강제할 수 있습니다. 제한된 값 집합은 false로 강제 변환됩니다.
0nullundefinedNaN- 빈 문자열 (
"")
하나 이상의 문자가 포함된 문자열과 모든 0이 아닌 숫자를 비롯한 다른 모든 값은 true로 변환됩니다. 이를 일반적으로 '참' 값과 '거짓' 값이라고 합니다.
"My string" == true
> true
100 == true
> true
0 == true
> false
논리 연산자
논리 AND (&&), OR (||), NOT (!) 연산자를 사용하여 두 개 이상의 조건문을 평가하여 스크립트의 흐름을 제어합니다.
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
논리 NOT (!) 표현식은 피연산자의 참 또는 거짓 값을 부정하여 피연산자가 false로 평가되면 true로, true로 평가되면 false로 평가됩니다.
true
> true
!true
> false
!false
> true
숫자나 문자열과 같은 다른 데이터 유형 앞에 논리 NOT 연산자 (!)를 사용하면 해당 값을 불리언으로 강제 변환하고 결과의 참 또는 거짓 값을 반전시킵니다.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
일반적으로 NOT 연산자를 두 번 사용하여 데이터를 일치하는 불리언 값으로 빠르게 변환합니다.
!!"string"
> true
!!0
> false
논리 AND 및 OR 연산자는 자체적으로 변환을 실행하지 않습니다. 평가 중인 두 피연산자 중 하나의 값을 반환하며, 선택된 피연산자는 해당 평가에 따라 결정됩니다.
논리 AND (&&)는 피연산자가 false로 평가되는 경우에만 두 피연산자 중 첫 번째 피연산자를 반환하고 그렇지 않은 경우에는 두 번째 피연산자를 반환합니다. 불리언 값으로 평가되는 비교에서는 논리 AND의 양쪽 피연산자가 true로 평가되는 경우에만 true를 반환합니다. 어느 한쪽이 false로 평가되면 false를 반환합니다.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
&&가 불리언이 아닌 두 피연산자와 함께 사용되면 첫 번째 피연산자를 false로 강제할 수 있는 경우 변경되지 않은 상태로 반환됩니다. 첫 번째 피연산자를 true로 강제할 수 있는 경우 두 번째 피연산자는 변경되지 않은 상태로 반환됩니다.
false && "My string"
> false
null && "My string"
> null
"My string" && false
> false
"My string" && "My second string"
> "My second string"
2 === 2 && "My string"
> "My string"
논리 OR (||)는 피연산자가 true로 평가되는 경우에만 두 피연산자 중 첫 번째 피연산자를 반환하고 그렇지 않은 경우에는 두 번째 피연산자를 반환합니다. 불리언 값으로 평가되는 비교에서 이는 피연산자 중 하나가 true로 평가되면 true를 반환하고 어느 쪽도 true로 평가되지 않으면 false를 반환함을 의미합니다.
true || false
> true
false || true
> true
true || true
> true
false || false
> false
불리언이 아닌 두 피연산자와 함께 ||를 사용하면 true로 강제 변환할 수 있는 경우 첫 번째 피연산자를 변경되지 않은 상태로 반환합니다. 첫 번째 피연산자를 false로 강제할 수 있는 경우 두 번째 피연산자는 변경되지 않은 상태로 반환됩니다.
false || "My string"
> "My string"
null || "My string"
> "My string"
"My string" || false
> "My string"
"My string" || "My second string"
> "My string"
2 === 2 || "My string"
> true
Nullish coalescing operator
ES2020에서 도입된 'nullish 병합 연산자' (??)는 피연산자에 null 또는 undefined 이외의 값이 있는 경우에만 첫 번째 피연산자를 반환합니다. 그렇지 않으면 두 번째 피연산자를 반환합니다.
null ?? "My string"
> "My string"
undefined ?? "My string"
> "My string"
true ?? "My string";
> true
??는 논리 OR과 유사하지만 첫 번째 피연산자가 평가되는 방식이 더 엄격합니다. ||는 undefined 및 null를 포함하여 false로 변환할 수 있는 표현식의 두 번째 피연산자를 반환합니다. ??는 첫 번째 피연산자가 false로 강제될 수 있더라도 첫 번째 피연산자가 null 또는 undefined과 정확히 일치하는 경우에만 두 번째 피연산자를 반환합니다.
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
논리 할당 연산자
할당 연산자를 사용하여 두 번째 연산자의 값을 첫 번째 연산자에 할당합니다. 가장 일반적인 예는 선언된 변수에 값을 할당하는 데 사용되는 단일 등호 (=)입니다.
논리 할당 연산자를 사용하여 변수의 참 또는 거짓 값에 따라 변수에 값을 조건부로 할당합니다.
논리 AND 할당 (&&=) 연산자는 두 번째 피연산자를 평가하고 첫 번째 피연산자가 true로 평가되는 경우에만 첫 번째 피연산자에 할당합니다. 즉, '첫 번째 피연산자가 true인 경우 대신 두 번째 피연산자의 값을 할당합니다.'
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
첫 번째 피연산자의 참 또는 거짓 값에 따라 할당이 실행되는지 여부가 결정됩니다. 그러나 비교 연산자를 사용하여 첫 번째 피연산자를 평가하려고 하면 값을 할당할 수 없는 true 또는 false 불리언이 됩니다.
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
논리 OR 할당 (||=) 연산자는 두 번째 피연산자를 평가하고 첫 번째 피연산자가 false로 평가되면 첫 번째 피연산자에 할당합니다. 즉, '첫 번째 피연산자가 false이면 대신 두 번째 피연산자의 값을 할당합니다.'
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
이해도 확인
'엄격히 동일'을 나타내는 연산자는 무엇인가요?
======!=