일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- graphql
- Modal
- cicd
- styled-component
- socket.io
- typescript
- express
- 정규표현식
- 웹크롤링
- react
- 회고
- 웹팩
- Redux
- 포트포워딩
- sequelize
- 성능최적화
- component
- Recoil
- route
- 반응형웹
- scrapping
- go
- AWS
- docker
- javascript animation
- CDN
- npx
- Today
- Total
프로그래밍 공부하기
논리연산자 AND, OR의 결과값 본문
1. Boolean 값
논리연산자는 보통 Boolean 값(True/False)과 함께 쓰이며 그 결과는 다음과 같다.
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(...)부분이 실행되는 것이다.
참고 사이트
'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 |