일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 크라코
- react-hook-form
- 자료구조와알고리즘
- Typescript
- 리액트
- Flipper
- 코드숨
- craco
- 배열
- 프로그래머스
- react-native-image-picker
- sort( )
- 자바스크립트
- 리액트네이티브
- js
- ios
- Android
- react-native-vision-camera
- react-native
- 리액트쿼리
- 파스에러
- 제네릭타입
- 타입스크립트
- 유니온타입
- reactnative
- React
- javascript
- 모던자바스크립트
- slice
- react-native-camera-roll
- Today
- Total
KassyLog
[모던 자바스크립트]'제어문' 알아보기! 본문
1. 블록문
0개 이상의 문을 중괄호로 묶은 것으로, 코드블록 또는 블록이라고 부른다.
블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적이다.
2. 조건문
주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.
- if ... else 문
if (조건식){
실행문...
}else if(조건식){
실행문...
} else{
실행문...
}
- switch 문
주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다.
case는 상황을 의미하는 표현식을 지정하고 클론으로 마친다.
switch문과 일치하는 case문이 없다면 실행 순서는 default문으로 이동한다. default 문은 선택사항으로, 사용할 수도 않을수도 있다.
let month = 11;
let monthName;
swith (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
3. 반복문
- for 문
for문의 변수 선언문, 조건식, 증감식은 모두 옵션이므로 반드시 사용할 필요는 없다. 단, 어떤 식도 선언하지 않으면 무한로프(코드 블록을 무한히 반복 실행하는 문)가 된다. for문 내에서 for문을 중첩해 사용할 수 있다. 이를 중첩 for문 이라고 한다.
- while 문
while문은 주어진 조건식의 평과 결과가 참이면 코드 블록을 계속해서 반복 실행한다. for문은 반복 횟수가 명확할 때 주로 사용하고 while문은 반복 횟수가 불명확할 때 주로 사용한다.
let count = 0;
while (count < 3) {
console.log(count);
count++
}
위 예제는 count가 3보다 작을 때까지 코드 블록을 계속 반복해서 실행한다. 조건식의 평가 결과가 언제나 참이면 무한루프가 된다. 무한루프에서 탈출하기 위해서는 코드 블록 내에 if문으로 탈출 조건을 만들고 break문으로 코드 블록을 탈출한다.
let count = 0;
while (true) {
console.log(count);
count++
if (count === 3) break;
}
- do ... while 문
코드 블록을 먼저 실행하고 조건식을 평가한다. 따라서 코드 블록은 무조건 한 번 이상 실행된다.
let count = 0;
do {
console.log(count);
count++
} while (count < 3);
4. break 문
레이블 문, 반복문(for, for...in, for...of, while, do...while) 또는 switch문의 코드 블록을 탈출한다. 레이블 문, 반복문, switch문의 코드 블록 외에 break문을 사용하면 SyntaxError가 발생한다.
if (true) {
break; // Uncaught SyntaxError: Illegal break statement
}
레이블 문은 식별자가 붙은 문을 말한다.
레이블 문은 프로그램의 실행순서를 제어하는 데 사용합니다. switch문의 case문과 default문도 레이블 문이다. 레이블 문을 탈출하려면 break문에 레이블 식별자를 지정한다.
레이블 문은 중첩된 for문 외부로 탈출할 때 유용하지만 그 외의 경우에는 권장되지 않는다. 레이블 문을 사용하면 프로그램의 흐름이 복잡해져서 가독성이 나빠지고 오류를 발생시킬 가능성이 높아지기 때문이다.
break문은 반복문, switch문에서도 사용할 수 있다. 이 경우에는 break문에 레이블 식별자를 지정하지 않는다.
let string = 'consomme popcorn'
let search = 's'
let index;
//문자열은 유사 배열이므로 for 문으로 순회할 수 있다.
for (let i = 0; i < string.length; i++) {
if (string[i] === search) {
index = i;
break;
}
}
console.log(index); // 3
// string.prototype.indexOf 메서드를 사용해도 같은 동작을 한다.
console.log(string.indexOf(search)); // 3
5. continue 문
반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킵니다. break문처럼 반복문을 탈출하지는 않습니다.
let string = 'consomme popcorn'
let search = 'm'
let count = 0;
for (let i = 0; i < string.length; i++) {
// 'o'가 아니면 현 지점에서 실행을 중단하고 반복문의 증감식(i++)으로 이동
if (string[i] !== search) continue;
count++ // continue 문이 실행되면 이 문은 실행되지 않음
}
console.log(count); // 4
if문 내에서 실행해야 할 코드가 길다면 continue문을 사용하는 것이 가독성이 더 좋다.
'javascript' 카테고리의 다른 글
[모던 자바스크립트]객체리터럴 (0) | 2022.12.17 |
---|---|
[모던 자바스크립트]원시 값과 객체의 비교 (0) | 2022.12.17 |
[모던 자바스크립트]'타입변환과 단축평가' 알아보기! (0) | 2022.12.11 |
[모던 자바스크립트]let, const 그리고 블록 레벨 스코프 (0) | 2022.11.27 |
[모던 자바스크립트]전역 변수의 문제점 (0) | 2022.11.27 |