제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수있다.
하지만 이는 직관적인 코드의 흐름을 혼란스럽게 만들고 가독성이 떨어진다.
따라서 고차함수를 사용한 함수형 프로그래밍 기법을 통해 제어문 사용을 줄여보자
블록문은 0개이상의 중괄호로 묶은 것으로 JS는 블록문을 하나의 실행 단위로 취급한다.
단독으로도 쓸 수 있으나 제어문이나 함수를 정의할 때 쓰는데 일반적이다.
조건문은 주어진 조건식의 평가결과(boolean)에따라 코드 블록(블록문 : {})의 실행 여부를 결정한다
JS의 조건문으로는 if…else문, switch문이 있다.
반복문은 조건식의 평가 결과가 참인 경우 코드 블록을 실행한 후 조건식을 다시 평가해 코드 블록을 다시 실행하는 것을 조건식의 평가 결과가 거짓이 될때까지 반복한다
JS의 조건문으로는 for문, while문, do…while문이 있다.
TIP)
for문은 반복 횟수가 명확할 때, while문은 반복횟수가 불명확할 때 주로 사용한다
Cf) 반복문을 대체 할 수 있는 JS문법
배열의 순회 : forEach,
객체의 프로퍼티 열거 : for … in
이터러블을 순회 : for … of
가 있다.
break문은 레이블 문, 반복문(for, for…in, for…of, while, do…while), switch문의 코드 블록을 탈출한다
Cf) 레이블 문
레이블 문이란 식별자가 붙은 문 으로 프로그램의 실행 순서를 제어하는데 사용하며 레이블 문을 탈출할때는 brack 문뒤에 탈출할 레이블 식별자를 지정한다
foo2: {
console.log(1);
break foo2;
console.log(2);
}
console.log("done");
/*
1
done
*/
레이블문의 유용한점은 중첩 for문을 쓸때 그냥 break문을 쓴다면 내부의 for문 하나만 탈출하게되지만
나가고 싶은 for문에 레이블 식별자를 지정해주면 거기까지 탈출할 수 있다.
// 안쪽 for문만 탈출하고 바깥쪽 for문은 계속 돈다
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i + j === 3) break;
console.log(`inner1 [${i}, ${j}]`);
}
console.log(`outer1 [${i}]`);
}
console.log("done1");
/*
inner1 [0, 0]
inner1 [0, 1]
inner1 [0, 2]
outer1 [0]
inner1 [1, 0]
inner1 [1, 1]
outer1 [1]
inner1 [2, 0]
outer1 [2]
done1
*/
// outer 레이블 문까지 탈출한다
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i + j === 3) break outer;
console.log(`inner2 [${i}, ${j}]`);
}
console.log(`outer2 [${i}]`);
}
console.log("done2");
/*
inner2 [0, 0]
inner2 [0, 1]
inner2 [0, 2]
outer2 [0]
inner2 [1, 0]
inner2 [1, 1]
done2
*/
하지만 일반적인 경우에서는 프로그램의 흐름이 복잡해져서 가독성이 나빠지므로 권장하지 않는다
continue문은 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다
(간단하게 말해서 다음턴으로 넘어간다)
소중한 정보 감사드립니다!