
제어문? 순차적 실행 흐름을 변화시키는 문장
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( 표현식 ){
case 표현식 1 :
실행문 ( 문장 여러 개 - 보통 숫자 리터럴, 문자 리터열)
break;
case 표현식 2 :
실행문 ( 문장 여러 개 )
break;
...
case 표현식 3 :
실행문 ( 문장 여러 개 )
break;
default :
실행문 n + 1 ( 문장 여러 개 )
}
while ( 조건식 ) 문장
while문 실행 시 가장 먼저 조건식을 평가한다.
평가한 결과가 false면 while문을 빠져나와 다음 처리로 이동한다.
ture면 문장을 실행하고 다시 한번 while문의 시작 부분으로 돌아가서 조건식을 평가한다.
function fact(n){
var k = 1, i = 1;
while(i < n){
k *= (++i);
}
return k;
}
fact(5); // 120
do 문장 while ( 조건식 );
function fact(n){
var k = 1, i = n;
do{
k *= i--;
}while(i > 0);
return k;
}
fact(5); // 120
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문이 실행되면 먼저 객체 표현식을 평가한다.
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 라벨 이름;
✔️ 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 문이 반복을 새로 시작할 때 동작
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