study blog
[JavaScript] 자바스크립트 입문 (5)_ 조건문/switch문 본문
/*프로그래머스의 무료 자바스크립트 입문강의를 듣고 기록하는 포스팅입니다.*/
if 조건문 (if, else, else if)
if (조건식) {
참일 떄 실행되는 코드
}
if문은 괄호안에 조건식을 넣고 난 뒤 실행할 코드를 적는다.
예시들을 보자.
if (true) {
console.log("이 구문은 실행됩니다.");
}
if (false) {
console.log("이 구문은 실행되지 않습니다.");
}
출력값: 이 구문은 실행됩니다.
조건문에서 true일 때만 출력이 되기 때문에 결과로 <이 구문은 실행됩니다.>만 나오고
두번째인 false는 출력이 아예 되지 않는다.
if (true) {
console.log("1");
} else {
console.log("2");
}
if (false) {
console.log("1");
} else {
console.log("2");
}
첫번째 출력값: 1 // 두번째 출력값: 2
else는 위의 조건식이 참이 아니면 실행하라는 뜻이다.
첫번째 if문은 true이기 때문에 else 이하의 코드는 실행되지 않는다.
그렇기 때문에 두번째 if문에선 else 코드가 실행되어 2가 출력되는 것이다.
if (false) {
console.log("1");
} else if (false) {
console.log("2");
} else if (true) {
console.log("3");
} else {
console.log("4");
}
출력값: 3
else if문은 여러번 사용할 수 있다.
예시를 보면 false들은 계속 출력이 안 되다가 true가 됐을 때 바로 3을 출력하고 실행을 끝마친다.
실습문제
year가 윤년인지 아닌지를 true, false로 반환하는 solution 함수를 완성하세요.
(편의상, 4의 배수인 해는 모두 윤년으로 생각합니다.)
function solution(year){
if (year % 4 === 0) {
return true;
} else {
return false;
}
}
여기서 알게된 지식은 4의 배수인지를 검사하려면 year % 4 === 0을 쓰면 된다는 것이다.
switch문 (조건문)
switch문도 조건문인데 이렇게 되면 언제 if를 쓰고 언제 switch를 쓸지 궁금해진다🤔
그래서 구글링해보니 if문은 참/거짓을 알아보거나 서너개 이하의 조건 비교를 하는데에 합리적이라고 한다.
if문은 조건 비교가 많아질수록 성능 저하가 있다고 한다.
switch (비교할 값) {
case 값1: 비교할 값이 값1일 경우 실행될 코드;
break;
case 값2: 비교할 값이 값2일 경우 실행될 코드;
break;
default: 비교할 값이 위의 모든 값과 다를 경우 실행될 코드;
}
switch는 else if와 마찬가지로 여러 개의 case를 쓸 수 있다.
또한 break를 써서 조건문에서 나올 수 있게끔 한다.
마지막 default에는 break를 따로 명시하지 않아도 자동으로 switch문이 종료된다.
예시를 보며 익혀보자.
var choice = parseInt(prompt("메뉴를 선택해주세요."));
console.log(choice + "번 메뉴를 선택하셨습니다.");
switch (choice) {
case 1:
console.log("아이스 아메리카노");
break;
case 2:
console.log("아이스 라떼");
break;
case 3:
console.log("카푸치노");
break;
case 4:
console.log("밀크티");
break;
default:
console.log("죄송합니다. 해당 메뉴는 없습니다.");
break;
}
실행하게 되면 메뉴를 입력할 창이 뜨고 숫자를 입력하게 되면 해당 console.log 함수가 출력된다.
그래서 만약 입력창에 5를 입력하게 되면 default 값인 죄송합니다. 가 출력하게 된다.
여기서 왜 parseInt가 쓰였는지 궁금해서 이를 지우고 실행해보았다.
1을 입력함에도 불구하고 죄송합니다가 출력되었다.
우리는 여기서 parseInt의 속성과 1과 "1"의 차이점을 알고있다면 쉽게 이해할 수 있다.
parseInt는 문자열을 숫자로 변형시켜준다.
즉, 우리가 입력창에 1이라는 Number를 쓴다 하더라도 prompt 함수에 string을 입력했으니 string으로 받아드리게 되고
switch문의 case 값에는 Number를 써줬으니 string을 Number로 바꿔줘야 제대로 인식할 수 있다.
만약 parseInt를 사용하지 않고 쓰고 싶다면
case 값에 쓰여진 Number를 string으로 바꿔주면 제대로 출력이 된다.
var choice = prompt("메뉴를 선택해주세요.");
console.log(choice + "번 메뉴를 선택하셨습니다.");
switch (choice) {
case "1":
console.log("아이스 아메리카노");
break;
}
실습문제
각 달을 month라는 인자로 받아 그 달이 몇일까지 있는지 반환하는 함수 solution 함수를 완성하세요.
(2월은 28일까지 있다고 가정)
function solution( month ){
switch (month) {
case 2:
return 28;
case 1:
case 3:
case 5:
case 7:
case 9:
case 11:
return 31;
default:
return 30;
}
}
여기서 알아야 할 것은 case의 나열과 break의 사용이다.
case를 나열하고 싶을 때, case 1,3,5,7: return 이렇게 사용하면 안 된다. 무조건 위처럼 나열해야 한다.
또한 여기서 break를 쓰지 않는 이유는 return이 함수의 결과를 돌려주면서 반환하는 즉시 끝나기 때문이다.
console.log()의 경우에는 콘솔에 출력하는 함수. 즉, 콘솔에 보여주기만 하는 함수이다.
그래서 console.log()의 경우에는 break가 필요한 것.
'제1장' 카테고리의 다른 글
[JavaScript] 자바스크립트 입문 (7)_ scope/shadowing/method/closure (0) | 2022.02.07 |
---|---|
[JavaScript] 자바스크립트 입문 (6)_ 반복문(while,for) (0) | 2022.02.06 |
[JavaScript] 자바스크립트 입문 (4)_ 연산자/배열 (0) | 2022.02.04 |
[JavaScript] 자바스크립트 입문 (3)_ 연산자/함수 (0) | 2022.02.03 |
[JavaScript] 자바스크립트 입문 (2)_ 기본자료형/객체 (0) | 2022.02.02 |