프로그래밍 공부하기

논리연산자 AND, OR의 결과값 본문

Web/[JS] Common

논리연산자 AND, OR의 결과값

ihl 2020. 12. 31. 19:32

1. Boolean 값

  논리연산자는 보통 Boolean 값(True/False)과 함께 쓰이며 그 결과는 다음과 같다.

입력이 Boolean인 경우 논리연산자의 결과

2. 그 외의 값

  Boolean값이 아닌 다른 값이 Input으로 들어오면 결과는 어떻게 될까? 사실 ||와 &&는 피연산자 중 하나의 값을 반환하는 연산자이므로 Boolean 타입이 아닌 다른 값이 반환될 수 있다.

  2-1. OR

  OR의 경우 a || b 연산을 하였을 때 a가 true로 변환할 수 있으면 a를 반환, 그렇지 않으면 b를 반환한다.

console.log(-1 || 1)  //-1
console.log(1 || -1)  //1
console.log(0 || 1)   //1
console.log(-1 || 0)  //-1

  위 예시에서 -1과 1은 truthy한 값이고, 0은 falsy한 값이다. 따라서 첫 번째 피연산자가 -1이거나 1이면 trueth한 값이므로 첫번째 피연산자를 반환한다. 반대로 첫 번째 피연산자가 0이면 falsy한 값이므로 두 번째 피연산자를 리턴한다. 즉, 둘 중 하나라도 falsy라면 truthy한 피연산자을 반환하고 그렇지 않으면 첫 번째 피연산자를 반환하는 것이다. 

 

  2-2. AND

  AND의 경우 a || b 연산을 하였을 때 a가 true로 변환할 수 있으면 b를 반환, 그렇지 않으면 a를 반환한다.

console.log(-1 && 1)  //1
console.log(1 && -1)  //-1
console.log(0 && 1)   //0
console.log(-1 && 0)  //0

  OR와는 반대로 첫 번째 피연산자가 truty이면 두 번째 피연산자를 반환, 그렇지 않으면 첫 번째 피연산자를 반환한다. 즉, 두 개의 항 중 하나라도 falsy라면 falsy인 피연산자을 리턴하며, 모두 truty라면 두 번째 피연산자를 반환하는 것이다.

 

3. 활용

  AND와 OR연산자의 연산 결과가 True/False가 아닌 피연산자라는 것을 이용하여 다음과 같이 코드를 작성할 수 있다.

 3-1. 함수 매개변수의 기본 값 설정

function multiple(num1, num2){
  num2 = num2 || 2;   //num2의 기본 값을 2로 지정
  return num1 * num2;
}

multiple(2, 3);  //2*3 = 6
multiple(2);     //2*2 = 4
multiple(2, 0);  //2*2 = 4

  위와 같이 함수를 선언한 후 num2의 값을 인자로 넘겨주지 않고 함수를 호출했을 때 num2의 값은 undefined이다. 이 때 undefined는 falsy한 값이므로 함수 내에서 num2 || 2의 결과는 2가 되어 2 * 2를 리턴하는 것이다. 단, 위의 예시의 경우 num2로 0를 넘겨주었다면 || 연산자에 의해 num2가 2가 되버리므로 사용에 주의해야 한다.

 

 3-2. 조건식

let age1 = 22;
let age2 = 10;

age1 >= 18 && console.log("You are allowed in and out."); //You are allowed in and out.
age2 >= 18 && console.log("You are allowed in and out."); //false

age1 >= 18 || console.log("Children are not allowed to enter."); //true
age2 >= 18 || console.log("Children are not allowed to enter."); //Children are not allowed to enter.

  조건과 수행코드를 &&로 연결하면 조건이 true일 때 수행코드가 실행된다.

  age 값이 18 이상이라면(true) && 두 번째 피연산자도 확인해야 최종 결과가 나오므로 두 번째 피연산자인  console.log(...)가 실행된다. 반대로 age가 18 미만이라면 첫 번째 피연산자 age >= 18 부분에서 fasle가 되므로 뒤의 피연산자 console.log(...)를 실행하지 않아도 결과는 false이기 때문에 console.log(...) 부분이 실행되지 않는다.

 

  조건과 수행코드를 ||로 연결하면 조건이 false일 때 수행코드가 실행된다.

  age 값이 18 이상이라면(true) 두 번째 피연산자를 확인하지 않아도 최종 결과가 true이므로 두 번째 피연산자가 실행되지 않는다. 반대로 age가 18 미만(false)이라면 두 번째 피연산자인 console.log(...)부분을 확인해야 최종 결과가 나오므로 두 번째 피연산자인 console.log(...)부분이 실행되는 것이다.

 

 


참고 사이트

developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/%EB%85%BC%EB%A6%AC_%EC%97%B0%EC%82%B0%EC%9E%90(Logical_Operators)

 

논리 연산자 - JavaScript | MDN

논리 연산자는 보통 Boolean(논리적) 값과 함께 쓰이며, 불리언 값을 반환합니다. 그런데, &&과 || 연산자는 사실 피연산자 중 하나의 값을 반환합니다. 그러므로 불리언 외의 다른 값과 함께 사용하

developer.mozilla.org

 

'Web > [JS] Common' 카테고리의 다른 글

??(null 병합 연산자)  (0) 2021.01.01
JS 엔진 최적화를 위한 지식1 - Hidden Class  (0) 2021.01.01
내장고차함수: filter, map, reduce  (0) 2020.12.22
호이스팅(Hoisting)  (0) 2020.12.17
Assignment과 Shallow Copy와 Deep Copy  (0) 2020.12.17
Comments