조건문은 주어진 조건에 따라 코드를 실행하거나 실행하지 않는 문이다.
조건식의 결과가 true면 내부의 실행문이 실행되고, false면 실행문이 실행되지 않는다.
if(조건식) {
실행문;
}
중첩 if 문은 논리적으로 if → else if → else 문으로 변환이 가능하다.
조건문이 중첩되어 들여쓰기가 길어질수록 코드는 읽기 어려워져 가독성에 좋지 않다.
안좋은 예시
let first = true;
let second = false;
if (first) {
console.log("첫 번째 조건 충족!");
if (second) {
console.log("두 번쨰 조건도 충족!");
} else {
console.log("두 번째 조건은 불충족!");
}
} else {
console.log("첫 번쨰 조건 불충족!");
}
좋은 예시
if(first && second){ // true랑 false 둘 다 true가 나와야 실행되는데, 식은 그게아님
console.log("첫 번째 조건 충족!");
console.log("두 번쨰 조건도 충족!");
}
else if(first){ // true니까 이곳의 콘솔이 모두 출력되고 조건문 마침.
console.log("첫 번째 조건 충족!");
console.log("두 번째 조건은 불충족!");
}
else {
console.log("첫 번쨰 조건 불충족!");
}
switch (조건식) {
case 비교 조건식:
실행문;
}
let value = "A";
switch (value) {
case "A":
console.log("A");
}
// 결과: A
let value = "B";
switch (value) {
case "A":
console.log("A"):
case "B":
console.log("B"):
case "C":
console.log("C"):
}
// 결과: B
// 결과: C
위의 코드를 보면 콘솔에 B만 출력될 것이라 예상했지만,
실제로는 B, C 모두 출력 된다.
switch문은 일치하는 case를 발견하면 일치 여부와 상관없이
그 아래 case 들의 실행문을 모두 실행한다.
따라서 원하는 결과만 얻으려면 수동적으로 case에서 빠져 나와야한다.
이때 break
문이 사용된다.
break 추가해보기
let value = "B";
switch (value) {
case "A":
console.log("A"):
break;
case "B":
console.log("B"):
break;
case "C":
console.log("C"):
break;
}
// 결과: B
defalt 추가해보기
let value = "F";
switch (value) {
case "A":
console.log("A"):
break;
case "B":
console.log("B"):
break;
case "C":
console.log("C"):
break;
default:
console.log("아무것도 일치 안함"):
}
// 결과: 아무것도 일치 안함
조건식 ? 참일 때 실행되는 식 : 거짓일 때 실행되는 식
5 > 0 ? '참입니다' : '거짓입니다'; // 결과: "참입니다"
let value = 5 < 0 ? '참 입니다' : '거짓입니다';
value; // 결과: "거짓입니다"
let condition1 = true;
let condition2 = false;
let value = condition1 ? condition2 ? '둘다 참' : 'condition1만 참' : 'condition1이 거짓';
console.log(value); // condition1만 참
// 가독성을 위해 소괄호를 사용하기
let value = condition1 ? (condition2 ? '둘다 참' : 'condition1만 참') : 'condition2이 거짓';
// 가독성을 위해 들여쓰기로 구분하기
let value = condition1
? condition2
? '둘다 참'
: 'condition1만 참'
: 'condition1이 거짓';