번역 작업 진행중입니다.
논리 연산자(Logical operators)는 보통 Boolean
논리적(logical) 값(value)과 함께 쓰입니다. Logical operator와 Boolean value를 함께 사용하면, Boolean value를 반환(return)합니다. 그러나, &&
와 ||
연산자(operator)는 피연산자(operand)중 특정한 operand하나를 return합니다. 즉, Boolean이 아닌 value와 logical operator를 함께 사용하면 Boolean 이 아닌 value를 return할수 있습니다.
Description
The logical operators are described in the following table:
Operator | Usage | Description |
---|---|---|
Logical AND (&& ) |
expr1 && expr2 |
false로 변환할 수 있는 경우를 반환합니다. 그렇지 않으면 false를 반환합니다. 따라서 부울 값과 함께 사용할 경우 true를 반환하면 true를 반환하면 true를 반환하면 true를 반환합니다. |
Logical OR (|| ) |
expr1 || expr2 |
|| 을 true로 변환할 수 있으면이고, 그렇지 않으면입니다. 따라서 부울 값과 함께 사용될 때는 true를 반환하면 true를 반환하면 true를 반환하면 false로 변환할 수 있습니다. |
Logical NOT (! ) |
!expr |
단일 피연산자가 True로 변환될 수 있는 경우 true를 반환합니다. 그렇지 않으면 true를 반환합니다. |
값을 true로 변환하면 값이 truthy. 인 것입니다. 값을 false로 변환할 수 있으면 값이 falsy.인 것입니다.
거짓으로 변환할 수 있는 표현의 예는 다음과 같습니다.
null
;NaN;
0
;- empty string (
""
); undefined
.
&& 연산자와 || 연산자는 부울 값이 아닌 피연산자와 함께 사용될 수 있다, 그들은 커널 값이 항상 Boolean값으로 변환될 수 있으므로 커널 연산자로 간주될 수 있다.
Short-Circuit 평가
논리적인 표현이 좌측으로 평가되므로 다음 규칙을 사용하여"단락"평가를 수행할 수 있습니다.
false && (anything)
false 단락으로 평가된다.true || (anything)
true 단락으로 평가된다.
이러한 평가들은 이러한 평가들이 항상 옳다는 것을 보장한다.
상기 표현의 어떤 부분이라도 평가되지 않으므로 부작용이 발생하지 않도록 주의하십시오.
또한 위의 어떠한 것이든 위의 모든 것이 하나의 논리적 표현(괄호 안에 표시된 것처럼)임을 유의하십시오.
예를 들어, 다음과 같은 두가지 기능이 있다.
function shortCircuitEvaluation() { doSomething() || doSomethingElse() } function equivalentEvaluation() { var flag = doSomething(); if (!flag) { doSomethingElse(); } }
그러나 다음 문구는 연산자 순위 때문에 해당하지 않습니다. 그리고 적절한 손 조작자가 단일 표현을 요구하는 것이 필요하다는 점을 강조한다(괄호 안에 필요한 경우).
false && true || true // returns true false && (true || true) // returns false
Logical 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
Logical OR (||
)
다음 코드 예제에서는 ||(논리 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"
Logical NOT (!
)
다음 코드 예제에서는 의 예를 보여 줍니다. (논리적이지 않음)연산자
n1 = !true // !t returns false n2 = !false // !f returns true n3 = !"Cat" // !t returns false
Conversion rules
Converting AND to OR
다음과 같은 작업을 수반하는 다음 작업을 수행합니다.
bCondition1 && bCondition2
은 항상 다음과 같습니다.
!(!bCondition1 || !bCondition2)
Converting OR to AND
다음과 같은 작업을 수반하는 다음 작업을 수행합니다.
bCondition1 || bCondition2
은 항상 다음과 같습니다.
!(!bCondition1 && !bCondition2)
Converting between NOTs
다음과 같은 작업을 수반하는 다음 작업을 수행합니다.
!!bCondition
is always equal to:
bCondition
중첩된 괄호 제거
논리적인 표현들이 왼쪽으로 평가되듯이, 어떤 규칙에 따라 복잡한 표현에서 괄호를 떼어 내는 것은 항상 가능하다.
중첩 제거 및 제거
다음과 같은 합성 작업을 포함한 다음과 같은 합성 작업을 수행합니다.
bCondition1 || (bCondition2 && bCondition3)
은 항상 다음과 같습니다.
bCondition1 || bCondition2 && bCondition3
Removing nested OR
다음과 같은 합성 작업을 포함한 다음과 같은 합성 작업을 수행합니다.
bCondition1 && (bCondition2 || bCondition3)
은 항상 다음과 같습니다.
!(!bCondition1 || !bCondition2 && !bCondition3)
Specifications
Specification | Status | Comment |
---|---|---|
ECMAScript 1st Edition (ECMA-262) | Standard | Initial definition. |
ECMAScript 5.1 (ECMA-262) | Standard | Defined in several sections of the specification: Logical NOT Operator, Binary Logical Operators |
ECMAScript 2015 (6th Edition, ECMA-262) | Standard | Defined in several sections of the specification: Logical NOT Operator, Binary Logical Operators |
ECMAScript 2017 Draft (ECMA-262) | Draft | Defined in several sections of the specification: Logical NOT Operator, Binary Logical Operators |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Logical AND (&& ) |
(Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Logical OR (|| ) |
(Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Logical NOT (! ) |
(Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Logical AND (&& ) |
(Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Logical OR (|| ) |
(Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Logical NOT (! ) |
(Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |