8장 제어문

minseok oh·2022년 7월 27일

JS 

목록 보기
4/8

8.1 블록문

  • 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다
  • 자바스크립트는 블록문을 하나의 실행 단위로 취급한다
  • 블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적이다
// 블록문
{
  var foo = 10;
}

// 제어문
var x = 1;
if(x < 10) {
  x++;
}

// 함수 선언문
function sum(a, b) {
  return a + b;
}

8.2 조건문

  • 주어진 조건식의 평가 결과에 따라 코드(블록문)의 실행을 결정한다
  • 조건식은 불리언 값으로 평가될 수 있는 표현식이다
  • if...else / switch 문 두 가지 조건문을 제공한다

8.2.1 if...else문 ⇒ 논리적 참, 거짓으로 실행할 코드 블록을 결정한다

  • 주어진 조건식(불리언 값으로 평가될 수 있는 표현식)의 평가 결과, 즉 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정한다
if(조건식) {
  // 조건식이 참이면 이 코드 블록이 실행된다
}else {
  // 조건식이 거짓이면 이 코드 블록이 실행된다 
}

=> 반대일 경우도 있다!!!

// 조건식을 추가
if(조건식1) {
  // 조건식1이 참이면 이 코드 블록이 실행된다
}else if(조건식 2) {
  // 조건식2가 참이면 이 코드 블록이 실행된다
}else {
  // 조건식1 과 조건식2가 모두 거짓이면 이 코드 블록이 실행된다
}

=> 반대일 경우도 있다!!

// 삼항 조건 연산자로 바꿔 쓸 수 있다
var num = 2;
var kind = num ? (num > 0 ? '양수' : '음수') : '영';

console.log(kind); // 양수
  • 삼항 조건 연산자는 값으로 평가되는 표현식을 만든다
  • 삼항 조건 연산자 표현식은 값처럼 사용할 수 있기 때문에 변수에 할당할 수 있다

8.2.2 switch문 ⇒ 다양한 상황에 따라 실행할 코드 블록을 결정할 때 사용한다

  • 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다
  • case문은 상황을 의미하는 표현식을 지정하고 콜론으로 마친다
  • case문이 없다면 실행 순서는 default 문으로 이동한다 ⇒ default 문은 선택 사항으로 생략 가능
  • break 키워드로 구성된 break문은 코드 블록에서 탈출하는 역할을 한다(default 문은 break문이 별도로
    필요 없다)
// switch 문
switch (표현식) {
  case 표현식1:
    switch 문의 표현식과 표현식1이 일치하면 실행될 문;
    break;
  case 표현식2:
    switch 문의 표현식과 표현식2이 일치하면 실행될 문;
    break;
  default:
    switch 문의 표현식과 일치하는 case 문이 없을 때 실행될 문;
}

8.3 반복문

  • 조건식의 평가가 거짓일 때까지 조건식의 평가 결과가 참인 코드블록 반복하여 실행한다
  • 자바스크립트는 세 가지 반복문인 for문, while문, do...while 문을 제공 한다
  • 반복문을 대체할 수 있는 다양한 기능
    • 배열을 순회할 때 사용하는 ⇒ forEach 메서드
    • 객체의 프로퍼티를 열거할 때 사용하는 ⇒ for...in문
    • ES6에서 도입된 이터러블 순회할 수 있는 ⇒ for...of문
// for문 => 반복횟수가 명확할 때 주로 사용
for(변수 선언문 또는 할당문; 조건식; 증감식) {
  조건식이 참인 경우 반복 실행될 문;
}

// 무한루프
for(;;) {
  ...
}

// while문 => 반복횟수가 불명확할 때 주로 사용, 조건문의 평가 결과가 거짓이 되면 코드 블록을 실행하지 않고 종료한다
let count = 0;

while(count < 3) {
  console.log(count) // 0, 1, 2
  count++;
}

// while문 무한루프
while(true){
  ... 
}

// while문 무한루프 탈출할 때
let count = 0;

while(true) {
  console.log(count);
  if(count === 3) break;
} // 0, 1, 2

//do ...while문 => 코드 블록을 먼저 실행하고 조건식을 평가한다, 코드 블록은 무조건 한 번 이상 실행된다 
let count = 0;
do {
  console.log(count); // 0, 1, 2
  count++;
}while (count < 3);

8.4 break문

  • 레이블 문, 반복문, switch문의 코드 블록 외에 break 문을 사용하면 SyntaxError(문법 에러)가 발생
    한다
  • 레이블 문은 식별자가 붙은 문을 말한다 ( switch문의 case 문과 default 문도 레이블 문이다!!)
// foo 라는 레이블 식별자가 붙은 레이블 문
foo: console.log('foo');

8.5 continue 문

  • 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다
let string = 'Hello world';
let search = 'l';
let count = 0;

// continue 문을 사용하면 if 문 밖에 코드를 작성할 수 있다
for(let i = 0; i < string.length; i++) {
  // 'l' 이 아니면 현 지점에서 실행을 중단하고 반복문의 증감식으로 이동한다
  if(string[i] !== search) continue;
  count++; // continue 문이 실행되면 이 문은 실행되지 않는다
}

console.log(count);

// 참고로 String.prototype.match 메서드를 사용해도 같은 동작을 한다
const regexp = new RegExp(search, 'g');
console.log(string.match(regexp).length); // 3
profile
현재는 FE(Front) 개발자 미래엔 FSE(Full Stack) 개발자

0개의 댓글