if, else 와 함께 else if {}도 사용 할 수 있다
else if 를 이용하면 논리적으로 구분된 조건을 추가해서
여러조건에 해당되는 경우를 설정할 수 있다
const n = 15;
if (n % 3 === 0) { //n을 3으로 나눈몫이 0이라면
console.log('n은 3의 배수 입니다');
} else if (n % 5 === 0) { //3의 배수가 아닌 경우 5의 배수일 경우
console.log('n은 5의 배수 입니다');
} else {
console.log('n은 3의 배수도 아니고 5의 배수도 아닙니다');
}
만약 n이 3의 배수이면서, 5의 배수라면 출력되는 값은 첫번 째, 'n은 3의 배수입니다' 에서 걸리게된다
하지만 3의 배수이면서 5의 배수라면 두번 째 'n은 5의 배수 입니다'에 걸린다
3과 5는 15의 배수이기도 하다
if (n % 3 === 0 && n % 5 === 0) {
console.log('n 은 15의 배수입니다');
}
if (n % 3 === 0 && n % 5 === 0) {
console.log('n 은 15의 배수입니다');
} else if (n % 3 === 0) {
console.log('n은 3의 배수 입니다');
} else if (n % 5 === 0) {
console.log('n은 5의 배수 입니다');
} else {
console.log('n은 3의 배수도 아니고 5의 배수도 아닙니다');
}
만약 첫번째 작성된 코드처럼 하면 의도한게 아니라면 오류가 발생할 수 있다 15인 경우를 따로 빼주었고, 3과 5의 영역을 전혀 겹치지 않는 조건을 원한다면 두번째 로직이 좀 더 맞다
const multipleOfThree = n % 3 === 0; //하나의 Boolean형을 평가하는 평가식이다
const multipleOfFive = n % 5 === 0;
if (multipleOfThree && multipleOfFive) {
console.log('n 은 15의 배수입니다');
} else if (multipleOfThree) {
console.log('n은 3의 배수 입니다');
} else if (multipleOfFive) {
console.log('n은 5의 배수 입니다');
} else {
console.log('n은 3의 배수도 아니고 5의 배수도 아닙니다');
}