on
모던 자바스크립트 2.10 조건처리 2.11 논리연산자
모던 자바스크립트 2.10 조건처리 2.11 논리연산자
'if' 문
괄호안의 조건이 tru이면 코드블록 실행
형 변환 챕터에서 공부한 형 변환 규칙을 통해
0, 빈문자열, null, undefined, NaN -> false = fasly
이 외의 값 -> true = truthy
'else'절
if문 뒤에 else 절.
else 뒤에 이어지는 코드 블록은 조건이 거짓일 때 실행
'else if'로 복수 조건 처리
유사하지만 약간씩 차이가 있는 조건 여러 개 처리할 때 사용
조건부 연산자 '?'
조건에 따라 다른 값을 변수에 할당할 때
let result = condition ? value1 : value2;
평가 대상인 condition이 truthy라면 value1이, 그렇지 않으면 value2가 반환
let accessAllowed; let age = prompt('나이를 입력해 주세요.', ''); if (age > 18) { accessAllowed = true; } else { accessAllowed = false; } alert(accessAllowed);
이를 조건 연산자 '?'를 이용해 변환하면
let accessAllowed = (age > 18) ? true : false;
다중 '?'
물음표 연산자?를 여러 개 연결하면 복수의 조건을 처리할 수 있음
let age = prompt('나이를 입력해주세요.', 18); let message = (age < 3) ? '아기야 안녕?' : (age < 18) ? '안녕!' : (age < 100) ? '환영합니다!' : '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!'; alert( message );
가독성 좋지 않으므로 if, else문으로 변환가능
if (age < 3) { message = '아기야 안녕?'; } else if (age < 18) { message = '안녕!'; } else if (age < 100) { message = '환영합니다!'; } else { message = '나이가 아주 많으시거나, 나이가 아닌 값을 입력 하셨군요!'; }
논리연산자
논리 연산자의 종류 3가지
||(OR), &&(AND), !(NOT)
||(OR)
result = a || b;
불린값 조작하는데 사용
하나라도 true면 true 반환
alert( true || true ); // true alert( false || true ); // true alert( true || false ); // true alert( false || false ); // false
첫번째 truthy 를 찾는 OR 연산자 '||'
불린형이 아닌 경우도 가능
1. 왼쪽 피연산자부터 오른쪽으로 진행
2. 각 피연산자를 불린형으로 변환. 변환 후 값이 true이면 연산 멈추고 해당 피연산자의 변환 전 값을 반환
3. 모든 피연산자가 false로 평가된 경우엔 마지막 피연산자 반환
alert( 1 || 0 ); // 1 (1은 truthy임) alert( null || 1 ); // 1 (1은 truthy임) alert( null || 0 || 1 ); // 1 (1은 truthy임) alert( undefined || null || 0 ); // 0 (모두 falsy이므로, 마지막 값을 반환함) let firstName = ""; let lastName = ""; let nickName = "바이올렛"; alert( firstName || lastName || nickName || "익명"); // 바이올렛
&&(AND)
result = a && b;
피연산자가 모두 참일 때 true 반환
alert( true && true ); // true alert( false && true ); // false alert( true && false ); // false alert( false && false ); // false
첫번째 falsy를 찾는 AND 연산자 '&&'
1. 왼쪽 피연산자부터 오른쪽으로 진행
2. 피연산자는 불린형으로 변환된 후, 변환값이 false이면 평가를 멈추고 해당 피연산자의 변환 전 값 반환
3. 모든 피연산자가 true로 평가되는 경우 마지막 피연산자 반환
// 첫 번째 피연산자가 truthy이면, // AND는 두 번째 피연산자를 반환합니다. alert( 1 && 0 ); // 0 alert( 1 && 5 ); // 5 // 첫 번째 피연산자가 falsy이면, // AND는 첫 번째 피연산자를 반환하고, 두 번째 피연산자는 무시합니다. alert( null && 5 ); // null alert( 0 && "아무거나 와도 상관없습니다." ); // 0 alert( 1 && 2 && null && 3 ); // null alert( 1 && 2 && 3 ); // 마지막 값, 3
**&&의 우선순위가 ||보다 높습니다.
!(NOT)
result = !value;
1. 피연산자를 불린형으로 변환
2. 변환된 값의 역을 반환
alert( !true ); // false alert( !0 ); // true
** !!이면 boolean형으로 변환한 값 얻을 수 있음
**NOT 연산자의 우선순위는 모든 논리 연산자 중에서 가장 높기 때문에 항상 &&나 || 보다 먼저 실행
from http://jjuunnjuning.tistory.com/77 by ccl(A) rewrite - 2021-11-04 02:28:39