brother_stone 2020. 5. 2. 20:52

점프문의 종류

  • break

  • continue

  • return 

  • throw

이번에는 break, continue, 라벨문에 대해 알아보자 

 

7.4.1 라벨문

라벨 이름: 문장

 

자바스크립트에서 라벨로 점프할 수 있는 문장은 break문과 continue문뿐이며,

break문은 switch문과 반복문, continue문은 반복문 안에서만 사용할 수 있기 때문에

따라서 실제로 라벨을 붙여 사용할 수 있는 문장은 switch문반복문뿐임.

 

7.4.2 break문

  • switch문, 반복문에서 사용

  • break문 실행 시, 가장 안쪽에 있는 반복문이나 switch문에서 빠져나옴

break문에서 점프할 라벨 지정 시 

break 라벨 이름;

라벨을 지정한 break문을 실행하면 라벨이 붙은 문장 으로 점프함

그래서 주로 중첩된 반복문의 안쪽 반복문 안 또는 전체 반복문을 빠져나올 때 사용함

 

e.g.

 

var a = [246810];
var b = [1356911];
loop: for(var i = 0; i < a.length; i++){
    for(var j = 0; j < b.length; j++){
        if( a[i] == b[j]){
            break loop;  //(대충 loop라는 라벨이 붙은 문장에서 빠져나가라 라는 뜻)
        }
    }
}
console.log("a[" + i + "] = b[" + j + "]"); // a[2] = b[3]

 

7.4.3 continue문

 

  • continue 문을 실행하면 반복문 실행을 멈추고 반복을 새로 시작한다.

continue문에서 점프할 라벨 지정 시

continue 라벨 이름;

라벨을 지정한 continue문을 실행하면 라벨이 붙은 문장 처음(재확인)으로 점프함

 

 

 

다음 표는 continue문장이 반복을 새로 시작할 때의 동작에 대한 설명이다.

while문 반복문의 처음으로 되돌아가서 조건식을 다시 평가. 그 결과가 true면 반복문을 처음부터 실행한다.
do/while문 중간을 건너뛰고 반복문의 마지막 조건식을 평가. 그 결과가 true면 반복문을 처음부터 실행한다.
for문 반복식을 실행한 후에 조건식을 평가. 그 결과가 true면 반복문을 이어시 실행한다.
for/in문 반복문의 처음으로 되돌아감. 지정한 변수에 할당되어 있는 프로퍼티의 다음 프로퍼티를 대상으로 작업 시작.

 

e.g. 배열 a 안에서 값이 0 이상인 요소의 값을 모두 더하는 프로그램

var a = [
    2,
    5,
    -1,
    7,
    -3,
    6,
    9
];
for (var i = 0, sum = 0; i < a.length; i++) {
    if (a[i] < 0
        continue;  //이 때 continue는 a의 배열 요소 중 음수를 더하지 않기 위해 사용되었다.
    sum = sum + a[i];
}
console.log(sum); // → 29
 

 

e.g. 모든 요소의 값이 10 이하인 배열을 찾고, 각 배열 요소의 평균값을 구한 후 최대 평균값을 구하는 프로그램.

let a = [
    [
        2468
    ],
    [
        15123
    ],
    [
        7658
    ],
    [
        51534
    ],
    [
        3294
    ]
];
let max = Number.NEGATIVE_INFINITY;
 
loop1: for (i = 0; i < a.length; i++) {
    let average = 0;
    for (j = 0; j < a[i].length; j++) {
        if (a[i][j] > 10
            continue loop1;  // 10이상인 요소가 있는 배열을 건너뛰기 위해 라벨을 지정한 continue를 실행함.
        average = average + a[i][j];
    }
    average = average / a[i].length;
 
    console.log("i=" + i + ":평균값=" + average);
    if (max < average) {
        max = average;
    }
}
console.log("최대 평균값=" + max);
 
//i = 0 : 평균값 = 5
//i = 2 : 평균값 = 6.5
//i = 4 : 평균값 = 4.5
//최대 평균값 = 6.5