[딥다이브] 8장 제어문
1. 블록문
- 0 개이상의 문을 중괄호로 묶은것
- 코드블록 or 블록 이라고 부름
- 자체 종결성을 가지기 때문에 세미콜론 안붙임
//블록문
{
var yelim = 27;
}
//제어문
var x = 1;
if (x < 10){
x++;
}
//함수 선언문
function sum(a, b){
return a + b;
}
2. 조건문
- 평가 결과에 따라 블록의 실행을 결정
- 불리언 값으로 평가
-
if..else문
//if..else문 if(조건식){ // 조건식이 함이면 이 코드블록이 실행 } else { //조건식이 거짓이면 이 코드블록이 실행 } //조건식 추가 if(조건식1){ //조건식1이 참이면 이 코드블록이 실행 } else if (조건식2){ //조건식2가 참이면 이 코드블록 실행 } else { //조건식1가 조건식2가 모두 거짓이면 이 코드 블록이 실행된다. }
-
else if 문과 else 문은 옵션이란것을 알아두자.
(else if 문은 여러번 사용가능하다.)var yelim = 27; var adult; //if 문 if (yelim > 20) { adult = '어른'; } console.log(adult);//어른 //if...else 문 if(yelim > 20) { adult = '어른'; } else { adult = '어른아님'; } console.log(adult);//어른 //if..else if 문 if(yelim > 20){ adult = '어른'; } else if (20 > yelim > 11){ adult = '청소년' } else{ adult = '아기' } console.log(adult);//어른
-
코드내의 문이 하나면 중괄호 생략 가능
var yelim = 27; var growUp if (yelim > 20) growUp = '어른' else if (20 > yelim > 11) growUp = '청소년' else (11 > yelim) growUp = '아기' console.log(growUp);// 어른
-
대부분 if...else 문은 삼항 조건 연산자로 바꿔쓸수 있음.
(불린이 등장!)var yelim = 45; var diet; if(yelim % 5){ diet = '더 노력' } else{ diet = '성공' } consol.log(diet); | | | ⌄ var diet = yelim % 5 ? '더 노력' : '성공'; consol.log(diet);
-
세가지의 경우
var yelim = 45; var diet = yelim ? ( yelim > 43 ? '더 노력' : '성공') : '유지'; console.log(diet); //더 노력 // 기분이 좋진 않네 ^^..
-
-
switch 문
-
if..else 와는 달리 다양한 상황에 따라 실행할 코드 블록을 결정할떄 사용한다.
//월을 영어로 변환 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);
-
break; 를 안쓰면 마지막 문장이 송출되는 '폴스루' 현상이 일어난다.
-
'폴스루' 현상을 이용한 윤년계산법
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: days = ((year % 4 ==== 0 && year % 100 ! == 0) || (year % 400 === 0)) ? 29 : 28; break; default: console.log("Invalid month"); } console.log(days); //29
-
왠만하면 if..else 문을 이용하자, 하지만 조건이 너무 많아서 switch 문의 가독성이 더 좋다면 switch 문을 사용하도록
-
3. 반복문
-
조건식의 평가결과가 참인 경우 코드블록 실행, 조건식을 다시 평가하여 참인경우 다시실행.
조건식이 거짓일때까지 반복. -
for문, while문, do..while문
-
대체가능메서드
forEach //배열순회 for...in //객체의 프로퍼티 열거 for...of // 이터러블 순회
-
for 문
-
조건문이 거짓일떄까지 코드블록 반복실행
for ( var yellim = 27; yelim < 30; yelim++ ) { console.log(yelim); } // yelim은 27/ 30이하까지 증감식 yelim++ 가 실행된다,yelim++ 은 선할당 후증가라는 사실을 기억
-
역으로 이용
for ( var yelim = 27; yelim >= 20; yelim-- ) { console.log(yelim); }
-
for 문대 for문 중첩사용시
var h = 'hamburger'; var s = 'snack'; for ( var h = 450; h <= 500; h++ ) { for( var s = 300; s <= 500; s++){ if ( h + s === 800) console.log(`[${h}, ${s}]`); } }
-
-
while 문
-
조건문의 평가결과가 참일시 반복실행, 반복횟수가 불명확할때 주로 사용
var yelim = 45; while ( yelim >= 42){ console.log(yelim); yelim--; }
-
조건이 참이면 무한루프가 됨, 탈출하기 위해선 if문으로 탈출조건을 만들고, break 문으로 코드블록 탈출!
var yelim = 45; //무한루프 while (true){ console.log(yelim); yelim--; //yelim 이 42면 코드블록을 탈출한다. if(yelim === 42) break; }
-
-
do..while 문
-
코드블록 먼저실행, 조건식 평가,
반복실행 x```js var yelim = 46; do{ console.log(yelim); yelim--; } while ( yelim < 42); ```
-
##4. break 문
-
불필요한 반복을 회피할수 있어 유용
-
레이블문, 반복문, switch 문의 코드 블록 외에 사용시 SyntaxError(문법에러)가 발생
//yelim 이라는 식별자가 붙은 레이블 블록문 yelim: { console.log(1); break yelim; //탈출 console.log(2); } console.log('getFreedom!');//1, getFreedom!
-
중첩된 for문의 내부 for문에서 break문 실행시 외부 for문으로 진입(외부 for문에서 탈출시 레이블문 이용)
var name = 'yelim'; var search = 'l'; var index; for(var i = 0; i < name.length; i++){ if(name[i] === search){ index = i; break; } } console.log(index);//20 // String, prototype, indexOf 메서드를 사용해도 동일 console.log(name.indexOf(search)); //2
-
- continue 문
- 반복문의 코드블록을 현시점 중단, 반복문의 증감식으로 실행흐름을 이동
var name = 'yelim';
var search = 'l';
var count = 0;
for (var i = 0; i < name.length; i++) {
// 'l'이 아니면 증가시키지 않는다.
if(name[i] !== search) continue; count++;
}
console.log(count);//3
// String, prototype, match 메서드를 사용해도 동일
- continue 를 사용함으로써 if 문 밖에도 코드를 작성할수 있음
Author And Source
이 문제에 관하여([딥다이브] 8장 제어문), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@uiop01900/8장.-제어문저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)