모던 JS 딥다이브 공부 정리용 글입니다.
// 블록문
{
var foo = 10;
console.log(foo);
}
// 제어문
var x = 0;
while (x < 10) {
x++;
}
console.log(x); // 10
// 함수 선언문
function sum(x, y) {
return x + y;
}
console.log(sum(1, 2)); // 3
if (조건식1) {
// 조건식1이 참이면 이 코드 블록이 실행된다.
} else if (조건식2) {
// 조건식2이 참이면 이 코드 블록이 실행된다.
} else {
// 조건식1과 조건식2가 모두 거짓이면 이 코드 블록이 실행된다.
}
//실행문이 하나이면 코드블록 없이 써도 됨.
if (조건식1) console.log("hi")
else if (조건식2) console.log("bye")
else console.log("good")
// 월을 영어로 변환한다. (11 → 'November')
var month = 11;
var monthName;
switch (month) {
case 1:
monthName = 'January';
break;
case 2:
monthName = 'February';
break;
case 3:
monthName = 'March';
break;
case 4:
monthName = 'April';
break;
case 5:
monthName = 'May';
break;
case 6:
monthName = 'June';
break;
case 7:
monthName = 'July';
break;
case 8:
monthName = 'August';
break;
case 9:
monthName = 'September';
break;
case 10:
monthName = 'October';
break;
case 11:
monthName = 'November';
break;
case 12:
monthName = 'December';
break;
default:
monthName = 'Invalid month';
}
console.log(monthName); // November
break를 붙여주지 않으면 다음 case로 넘어간다
default문은 어차피 마지막 실행문이라 break 필요 없음.
사용 예시 2)
var year = 2000; // 2000년은 윤년으로 2월이 29일이다.
var month = 2;
var days = 0;
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31;
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
case 2:
// 윤년 계산 알고리즘
// 1. 년도가 4로 나누어 떨어지는 해는 윤년(2000, 2004, 2008, 2012, 2016, 2020…)
// 2. 그 중에서 년도가 100으로 나누어 떨어지는 해는 평년(2000, 2100, 2200...)
// 3. 그 중에서 년도가 400으로 나누어 떨어지는 해는 윤년(2000, 2400, 2800...)
days = ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) ? 29 : 28;
break;
default:
console.log('Invalid month');
}
console.log(days); // 29
for(초기화식; 조건식; 증감식){
조건식 참이면 반복 실행될 문
}
var count = 0;
// 무한루프
while (true) {
console.log(count);
count++;
// count가 3이면 코드 블록을 탈출한다.
if (count === 3) break;
} // 0 1 2
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행한다.
do {
console.log(count);
count++;
} while (count < 3); // 0 1 2
break문은 레이블문, 반복문, switch문의 코드 블록을 탈출한다.
그 외 if문 등에서 사용하면 Syntax Error 발생.
레이블 문? // 식별자가 붙은 코드 블록.
foo: {
console.log(1)
break foo;
console.log(2)
}
outer: for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
// i + j === 3이면 외부 for 문을 탈출한다.
if (i + j === 3) break outer;
}
}
console.log('Done!');
// continue 문을 사용하지 않으면 if 문 내에 코드를 작성해야 한다.
for (var i = 0; i < string.length; i++) {
// 'l'이면 카운트를 증가시킨다.
if (string[i] === 'l') {
count++;
// code
// code
// code
}
}
// continue 문을 사용면 if 문 밖에 코드를 작성할 수 있다.
for (var i = 0; i < string.length; i++) {
// 'l'이 아니면 카운트를 증가시키지 않는다.
if (string[i] !== 'l') continue;
count++;
// code
// code
// code
}