자바스크립트 논리연산자란?
자바스크립트 논리연산자는 주로 조건문과 논리적인 표현에서 사용되며, 논리적인 조건을 결합하거나 평가하는 데 사용됩니다. 주요 논리 연산자로는 AND(&&), OR(||), NOT(!)이 있습니다.
논리연산자 종류
AND (&&)
AND 연산자는 양쪽 피연산자가 모두 true일 때만 전체 표현식이 true가 됩니다.
한쪽이라도 false라면 false가 됩니다.
true && true //true
true && false //false
false && false //false
false && true //false
JavaScriptOR (||)
OR 연산자는 양쪽 피연산자 중 하나라도 true이면 전체 표현식이 true가 됩니다.
둘 다 false일 때만 false가 됩니다.
true || true //true
true || false //true
false || true //true
false || false //false
JavaScriptNOT (!)
NOT 연산자는 피연산자의 논리값을 반전시킵니다.
true는 false로, false는 true로 변환됩니다.
!true //false
!false //true
!!true //true
!!false //false
!null //true
!(0 === 0) //false
!(3 < 4) //false
JavaScript논리연산자 단축평가
논리연산자인 AND(&&)와 OR(||)에서의 단축평가는 두 번째 피연산자의 평가를 생략하고도 전체 표현식의 결과를 빠르게 결정할 수 있는 특징입니다. 이는 연산을 최소한으로 수행하여 효율적인 코드를 작성할 수 있게 해줍니다.
AND(&&) 의 단축평가
AND (&&) 연산자는 양쪽 피연산자가 모두 true일 때만 전체 표현식이 true가 됩니다.
즉 왼쪽 피연산자가 false 일 경우에는 오른쪽 피연산자는 볼 것도 없이 전체 표현식이 false 가 되기 때문에 오른쪽 피연산자의 평가를 수행하지 않고 바로 왼쪽 false 를 반환합니다.
let result = false && someFunction();
// someFunction()은 호출되지 않음
JavaScriptOR (||) 의 단축평가
OR (||) 연산자는 양쪽 피연산자 중 하나라도 true 면 전체 표현식이 true가 됩니다.
즉 왼쪽 피연산자가 true 일 경우에는 오른쪽 피연산자는 볼 것도 없이 전체 표현식이 true 가 되기 때문에 오른쪽 피연산자의 평가를 수행하지 않고 바로 왼쪽 true 를 반환합니다.
let result = true || someFunction();
// someFunction()은 호출되지 않음
JavaScript단축평가는 왜 일어날까?
불필요한 계산을 피해서 프로그램의 성능을 향상 시킬 수 있습니다. 특히, 함수 호출이나 복잡한 연산이 있는 경우, 이러한 단축 평가를 사용하면 성능상 이점이 있습니다.
단축평가 문자열 예시
이 표에서 피연산자1은 왼쪽에 오는 첫 번째 피연산자를 나타내며, 피연산자2는 오른쪽에 오는 두 번째 피연산자를 나타냅니다. 결과 열은 각각의 논리 연산자에 대한 평가 결과를 나타냅니다.
빈 문자열일 경우에는 false 로 평가 되고, 빈 문자열이 아닌 경우에는 true 로 평가 되기 때문에 아래와 같은 결과가 나오게 됩니다.
피연산자1 | 피연산자2 | AND(&&) 결과 | OR(||) 결과 |
---|---|---|---|
“hi” | “bye” | “bye” | “hi” |
“hi” | “” | “” | “hi” |
“” | “bye” | “” | “bye” |
“” | “” | “” | “” |
- AND(&&) 연산자
- 왼쪽 피연산자가 true 또는 truthy 값일 경우, 오른쪽 피연산자 결과가 반환됩니다.
- 왼쪽 피연산자가 false 또는 falsy 면 왼쪽 피연산자가 반환됩니다.
- OR(||) 연산자
- 왼쪽 피연산자가 false 또는 falsy 값일 경우, 오른쪽 피연산자 결과가 반환됩니다.
- 왼쪽 피연산자가 true 또는 truthy 면 왼쪽 피연산자가 반환됩니다.
AND(&&) 연산자 단축평가 정리
AND(&&) 연산자 | 단축평가 결과 |
---|---|
true && 값 | 값 |
false && 값 | false |
값 && true | true |
값 && false | false |
값1 && 값2 | 값2 |
OR(||) 연산자 단축평가 정리
OR(||) 연산자 | 단축평가 결과 |
---|---|
true || 값 | true |
false || 값 | 값 |
값 || true | 값 |
값 || false | 값 |
값1 || 값2 | 값1 |
단축평가는 성능 최적화와 관련이 있습니다. 특히, 함수 호출이나 비용이 큰 연산을 피할 수 있습니다. 또한, 단축평가는 코드를 간결하게 만들어 줄 수 있습니다. 하지만 이를 사용할 때 주의해야 할 점은 피연산자의 순서에 따라 결과가 달라질 수 있다는 점입니다.
단축평가 활용
undefined / null 오류 방지
단축평가는 undefined 또는 null 오류를 방지하는 데 도움이 됩니다. 예를 들어, 객체의 속성이 존재하는지 확인할 때, && 연산자를 사용하면 속성이 존재하지 않을 때 undefined 오류를 방지할 수 있습니다.
let 사용자 = { 이름: 'John', 나이: 20 };
let 나이 = 사용자 && 사용자.나이;
console.log(나이); // 출력: 20
JavaScript- AND(&&) 연산자를 사용하여 사용자.나이의 값이 존재하는지 확인하고, 값이 존재하면 나이에 할당합니다. 이를 통해 undefined 오류를 방지합니다.
함수 파라미터의 기본값 설정
함수의 파라미터가 주어지지 않거나 undefined인 경우에 기본값을 사용하는 예제입니다.
function greet(name) {
name = name || "Guest";
console.log("Hello, " + name + "!");
}
greet(); // "Hello, Guest!"
greet("John"); // "Hello, John!"
JavaScript- OR(||) 연산자는 왼쪽 피연산자가 truthy한 값이면 그 값을 반환하고, falsy면 오른쪽 피연산자를 반환합니다.
- 따라서 name이 주어지지 않거나 falsy한 값일 경우 오른쪽 “Guest”가 할당되어 name 변수가 설정됩니다.
- 즉 greet()를 호출하면 name이 주어지지 않았으므로 기본값 “Guest”가 사용되어 “Hello, Guest!”가 출력됩니다.
- 반대로, greet(“John”)를 호출하면 name이 주어졌으므로 전달된 값 “John”이 사용되어 “Hello, John!”이 출력됩니다.
결론
논리연산자는 조건문에서 여러 조건을 조합하거나 표현식을 평가하는 데 사용됩니다. AND, OR, NOT을 적절히 조합하여 복잡한 논리 표현식을 만들 수 있습니다. 이를 통해 프로그램은 다양한 조건에 따라 다르게 동작할 수 있습니다.