if( ) : ( ) 안에 들어가는 조건이 ture이면 코드가 실행된다.
복수의 문을 실행하고 싶으면 중괄호{ } 를 사용한다.
let year = prompt('올해는 몇 년도 일까요?', '');
if (year == 2022) {
alert( "정답입니다!" );
alert( "복수의 문을 실행하고 싶으면 중괄호 사용!" );
}
이때 boolean형 변환으로 인하여 0, ""(빈 문자열), null, undefined, NaN은 false가 된다.
이 외의 값은 boolean형 변환시 true가 된다.
if (0) { // 0은 false
alert("false");
}
if (1) { // 1은 true
alert("true");
}
다음과 같이 평가를 통해 확정된 불린값을 if문에 전달이 가능하다.
let cond = (year == 2022); // 동등 비교를 통해 true/false 여부를 결정한다.
if (cond) {
alert("true");
}
else : if문에 else절을 사용할 수 있으며 else는 거짓일 때 실행된다.
year = prompt('올해는 몇 년도 일까요?', '');
if (year == 2015) {
alert( '정답입니다!' );
} else {
alert( '오답입니다!' ); // 2022 이외의 값을 입력한 경우
}
더 많은 조건을 사용하고 싶으면 else if를 사용해 주면 된다.
if (age < 3) {
message = '응애야 안녕?';
} else if (age < 18) {
message = '좀 큰 응애야 안녕!';
} else if (age < 100) {
message = '형님들 환영합니다!';
} else {
message = '선생님...어떤 삶을 살아오신 겁니까..?';
}
조건부 연산자 '?' : 조건에 따라 다른 값을 변수에 할당해 줘야 한다.
let accessAllowed;
let age = prompt('나이를 입력해 주세요.', '');
if (age > 18) {
accessAllowed = true;
} else {
accessAllowed = false;
}
alert(accessAllowed);
'?'를 사용한 삼항 연산자로 바꾸어 쓸 때
(조건문을 괄호로 감쌀 필요가 없다. 연산자 우선순위에 따라 age > 18이 먼저 실행되기 때문이다.)
let accessAllowed = (age > 18) ? true : false;
accessAllowed = age > 18 ? true : false;
alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // false
boolean 형변환을 이용한 예시
if (1 || 0) {
alert( 'truthy!' );
}
if문을 통한 예시
let hour = 12;
let isWeekend = true;
if (hour < 10 || hour > 18 || isWeekend) {
alert( '영업시간이 아닙니다.' ); // 주말이기 때문임
}
OR연산자를 여러개 체이닝하면 첫 번째 true값을 반환하고 피연산자에 ture값이 하나도 없으면 마지막 피연산자를 반환한다.
alert( 1 || 0 ); // 1 (1은 true임)
alert( null || 1 ); // 1 (1은 true임)
alert( null || 0 || 1 ); // 1 (1은 true임)
alert( undefined || null || 0 ); // 0 (모두 false이므로, 마지막 값을 반환함)
true || alert("not printed");
false || alert("printed"); // 이 메세지만 출력된다.
AND(&&) : 두 개의 앰퍼샌드를 연달아 쓰면 AND 연산자 &&를 만들 수 있다.
모두가 true이면 true를 반환하고 하나라도 ture가 아니면 false를 반환한다.
alert( true && true ); // true
alert( false && true ); // false
alert( true && false ); // false
alert( false && false ); // false
AND연산자는 첫번째 false값을 반환하며 피연산자에 false값이 없다면 마지막 값을 반환한다.
첫 번째 피연산자가 true이면, AND는 두 번째 피연산자를 반환한다.
alert( 1 && 0 ); // 0
alert( 1 && 5 ); // 5
첫 번째 피연산자가 false이면, AND는 첫 번째 피연산자를 반환하고, 두 번째 피연산자는 무시한다.
alert( null && 5 ); // null
alert( 0 && "아무거나 와도 상관없습니다." ); // 0
// null이 false값 이므로 null 반환
alert( 1 && 2 && null && 3 ); // null
// 피연산자 모두 true값이므로 마지막 값 반환
alert( 1 && 2 && 3 ); // 마지막 값, 3
NOT(!) : 'NOT' 논리 연산자 NOT은 느낌표 !를 써서 만들 수 있다.
NOT 연산자는 인수를 하나만 받고, 다음 순서대로 연산을 수행한다.
1. 피연산자를 불린형(true / false)으로 변환한다.
2. 1에서 변환된 값의 역을 반환한다.
alert( !true ); // false
alert( !0 ); // true
NOT을 두 개 연달아 사용(!!)하면 값을 불린형으로 변환할 수 있다.
alert( !!"non-empty string" ); // true
alert( !!null ); // false
내장함수 Boolean을 사용하면 !!을 사용한 것과 같은 결과를 도출할 수있다.
alert( Boolean("non-empty string") ); // true
alert( Boolean(null) ); // false