JAVASCRIPT - 5. 제어 구문

yeon·2022년 12월 5일

자바스크립트(ES6)

목록 보기
5/7


제어문

제어문? 순차적 실행 흐름을 변화시키는 문장


조건문

if / else 문

1. if (조건식) { 문장 } 
→ 조건식이 true 로 평가되면 문장을 실행한다.

2. if (조건식) { 
	문장 1 
} else {
	문장 2 
} 
→  조건식이 true 로 평가되면 문장1을 실행하고 false 로 평가되면 문장2를 실행한다.

3. if ( 조건식 1 ) { 
	문장 1
} else if ( 조건식 2 ) {
	문장 2
} else if ( 조건식 3 ) {
	문장 3
...
} else {
	문장 n
}
→ 조건식 1이 성립하면 문장 1 실행, 조건식 2가 성립하면 문장 2 실행, 
조건식 3이 성립하면 문장 3 실행, 그렇지 않으면 문장 n 실행 

아래 예제처럼 else if 구문을 한 구문처럼 다룰 수 있다.


// 윤년인지 확인하는 함수 
function isLeapYear(year){
  	if( (year % 400 == 0 || ((year % 4 == 0) && (year % 100 != 0)) ){
       	return true;
    }
    return false;
} 

중첩된 if문


if(a > b){
  	if(a > c){
      	console.log("a가 가장 크다");
    }else{
      	console.log("a는 b 이하);
    }
}

switch 문

switch( 표현식 ){
	case 표현식 1 : 
    	실행문 ( 문장 여러 개 - 보통 숫자 리터럴, 문자 리터열)
        break;
    case 표현식 2 : 
    	실행문 ( 문장 여러 개 )
        break;
    ...
    case 표현식 3 :
    	실행문 ( 문장 여러 개 )
        break;
    default : 
    	실행문 n + 1 ( 문장 여러 개 )
}    


반복문

while 문

while ( 조건식 ) 문장 

while문 실행 시 가장 먼저 조건식을 평가한다.
평가한 결과가 false면 while문을 빠져나와 다음 처리로 이동한다.
ture면 문장을 실행하고 다시 한번 while문의 시작 부분으로 돌아가서 조건식을 평가한다.

  • while문 안에서 break 실행 시 while 문 빠져나옴
  • while문 안에서 continue 실행 시 while 문 시작 부분으로 되돌아감

function fact(n){
  	var k = 1, i = 1;
  	while(i < n){
   	 	k *= (++i);
  	}
  	return k;
}
fact(5);	// 120

do/while 문

do 문장 while ( 조건식 );
  • 문장 끝에 반드시 세미콜론 작성해준다.
  • do/while문을 실행하면 먼저 문장을 실행하고 뒤에 조건식을 평가한다.
  • 조건식을 평가한 결과가 false면 do/while문을 빠져 나와 다음 처리로 이동한다.
    true면 반복문의 시작 부분으로 되돌아 간다.
  • do/while문 안에 문장은 반드시 한 번 이상 실행된다.
function fact(n){
  	var k = 1, i = n;
  	do{
      k *= i--;
    }while(i > 0);
  	return k;
}
fact(5);	// 120

for문

for( 초기화 식; 조건식; 반복식 ) 문장 
// 배열 요소의 합계 구하기 
function sumArray(a){
  	var sum = 0;
	for(var i = 0; i < a.length; i++){
		sum += a[i];
	}  
	return sum;
}
var a = [3, 5, 1, 2, 6, 7];
console.log(sumArray(a));	// 24

for/in 문

for( 변수 in 객체 표현식 ) 문장 

for/in문이 실행되면 먼저 객체 표현식을 평가한다.
null또는 undefined로 평가되면 for/in문을 빠져나와 다음 작업으로 이동한다.


var obj = {a: 1, b: 2, c: 3}
for(var p in obj){
  console.log("p= "+p);
}
// p= a
// p= b
// p= c


점프문

라벨문

라벨이름 : 문장

✔️ 라벨 이름에는 모든 식별자 사용 가능
✔️ 라벨로 점프할 수 있는 문장은 break문, continue문이다.
✔️ 라벨을 붙여서 사용할 수 있는 문장은 switch문과 반복문 뿐이다.


loop: while( true ) {
  ...
  if( confirm("종료하시겠습니까?") ) break loop;
  ...
}
// break loop;를 실행하면 앞뒤 코드 상관없이 loop 라벨이 붙은 while문에서 빠져나온다.
  

break 문

break 라벨 이름;

✔️ switch 문과 반복문 안에서만 사용할 수 있다.
✔️ break 문을 실행하면 가능 안쪽에 있는 반복문이나 switch 문에서 빠져나온다.


var a = [2, 4, 6, 8, 10], b = [1, 3, 5, 6, 9, 11];
loop : for(var i = 0; i < a.length; i++){
  for(var j = 0; j < b.length; j++){
    if( a[i] == b[j] ) break loop;
  }
}
console.log("a[" + i + "] = b[" + j + "]");	// a[2] = b[3]

continue 문

continue 라벨 이름;

✔️ 라벨 지정 여부와 관계없이 반복문 안에서만 사용할 수 있다.
✔️ continue 문을 실행하면 반복문 실행을 멈추고 반복을 새로 시작한다.

continue 문이 반복을 새로 시작할 때 동작

while 문 : 반복문의 처음으로 되돌아가서 조건식을 다시 평가한다. 그 결과가 ture면 반복문을 처음부터 실행한다.

do/while문 : 중간을 건너뛰고 반복문의 마지막 조건식을 평가한다. 그 결과가 ture면 반복문을 처음부터 실행한다.

for 문 : 반복식을 실행한 후에 조건식을 평가한다.

for/in 문 : 반복문의 처음으로 되돌아간다. 지정한 변수에 할당되어 있는 프로퍼티의 다음 프로퍼티를 대상으로 작업을 시작한다.


var a = [2, 5, -1, 7, -3, 6, 9];
for(var i = 0, sum = 0; i < a.length; i++){
  	if(a[i] < 0) continue;
  	sume += a[i];
}

console.log(sum);	// 29






profile
다재다능한 코린이가 될거야 ! 🧚‍♀️

0개의 댓글