비교 연산자

비교 연산자는 두 피연산자의 값을 비교하고 이 값이 형성되는 문이 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

트루시 및 거짓

자바스크립트의 모든 값은 암시적으로 true 또는 false이며 상응하는 불리언 값으로 강제 변환될 수 있습니다(예: '느슨하게 같음' 비교 연산자 사용). 제한된 값 집합은 false로 강제 변환됩니다.

  • 0
  • null
  • undefined
  • NaN
  • 빈 문자열 ("")

하나 이상의 문자와 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

일반적으로 2개의 NOT 연산자를 사용하여 데이터를 일치하는 불리언 값으로 빠르게 강제 변환합니다.

!!"string"
> true

!!0
> false

논리 연산자 AND 및 OR 연산자는 자체적으로 강제 변환을 수행하지 않습니다. 이러한 메서드는 평가 중인 두 피연산자 중 하나의 값을 반환하며 해당 평가에 따라 선택된 피연산자가 결정됩니다.

논리곱 (&&)은 두 피연산자가 false로 평가되는 경우에만 두 피연산자 중 첫 번째 피연산자를 반환하고 그렇지 않은 경우 두 번째 피연산자를 반환합니다. 불리언 값으로 평가되는 비교에서 논리곱의 양쪽 피연산자가 true로 판정되는 경우에만 true를 반환합니다. 어느 쪽이든 false로 평가되면 false를 반환합니다.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

&&가 불리언이 아닌 2개의 피연산자와 함께 사용될 때, 첫 번째 피연산자가 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"

논리합 (||)은 두 피연산자가 true로 평가되는 경우에만 두 피연산자 중 첫 번째 피연산자를 반환하고 그렇지 않은 경우 두 번째 피연산자를 반환합니다. 불리언 값으로 평가되는 비교에서 이는 두 피연산자 중 하나가 true로 평가되면 true을 반환하고 어느 쪽도 true로 평가되지 않으면 false를 반환한다는 의미입니다.

true || false
> true

false || true
> true

true || true
> true

false || false
> false

2개의 비부울 피연산자와 함께 ||를 사용할 때 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

null리시 병합 연산자

ES2020에 도입된 'nullish 병합 연산자' (??)는 첫 번째 피연산자에 null 또는 undefined 이외의 값이 있는 경우에만 첫 번째 피연산자를 반환합니다. 그렇지 않으면 두 번째 피연산자가 반환됩니다.

null ?? "My string"
> "My string"

undefined ?? "My string"
> "My string"

true ?? "My string";
> true

??는 논리합(OR)과 비슷하지만 첫 번째 피연산자의 평가 방식이 더 엄격합니다. ||undefinednullfalse로 강제 변환될 수 있는 표현식의 두 번째 피연산자를 반환합니다. ??는 첫 번째 피연산자가 null 또는 undefined이 아니면 false로 강제 변환될 수 있더라도 두 번째 피연산자를 반환합니다.

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

이해도 테스트

'완전히 같음'을 나타내는 연산자는 무엇인가요?

===
==
=
!=