[JavaScript 개념잡기] 조건문과 반복문



3. 조건문과 반복문

 

1) Scope

✔ Scope란?

변수 혹은 상수에 접근할 수 있는 범위

  • 모듈, 함수 내 코드에서 동일한 변수 사용 시 간섭을 줄이는 용도로 사용
  • Scope는 Global Scope(전역 변수)와 Local Scope(지역 변수)로 구분
  • Global Scope : 전역에 선언되어 어디에서도 접근 가능
  • Local Scope?(block, function level scope) : 특정 지역에 선언되어, 해당 지역 내에서만 접근 가능




2) 조건문

✔ 조건문 : if-else

알고리즘에서 논리적 비교를 할 때 사용되는 조건식

  • if, if else, else 키워드를 통해 구성됨
  • 조건식에 맞을 경우 중괄호 {} 내에 있는 명령문을 수행
  • 단, 실행 문장이 단일문장 인 경우 {} 생략 가능
const number = 5; 

if (number > 0) {
  // code
} else {
  // code
}
// code after if...else



✔ 조건문 : 3항 연산자

3항 연산자를 통해 if-else를 대체하여 사용 가능

  • 변수 = (조건식) ? 참일 때 값 : 거짓일 때 값
  • 코드 가독성을 위해 남발 자제!
const age = 20;

if (age < 19) {
  msg = "성인이 아닙니다.";
} else {
  msg = "성인입니다.";
}
console.log(msg); // 성인입니다.

// 조건문 3항 연산자
msg_another = age < 19 ? "성인이 아닙니다." : "성인입니다.";
console.log(msg_aother); // 성인입니다.



✔ 조건문 : switch

표현식을 평가하여 그 값이 일치하는 case문을 실행하는 조건문

  • switch, case, break, default 키워드를 통해 구성되며 조건에 맞는 case 구문을 수행
  • 일반적으로 하나의 case만 수행되도록 case 끝을 break으로 끝맺음
    switch (ch) {
    case 1:
      statements;
      break;
    case 2:
      statements;
      break;
    case 3:
      statements;
      break;
    }



 

3) 반복문

✔ 반복문 : for

조건문이 fail되기 전까지 코드 블록을 반복 수행

  • 선언문(Init Expression), 조건문(Test Expression), 증감문(Update Expression) 형태로 이루어짐
  • 선언문, 조건문, 증감문 자리에 공백 입력 가능
for (Init Expression; Test Expression; Update Expression) {
  // statement block...
}



✔ 반복문 : for(확장)

for (key in object) {
  // code block...
}
  1. for...in 반복문
    • 객체의 key, value 형태를 반복하여 수행하는데 최적화
    • 첫 번째부터 마지막까지 객체의 키 개수만큼 반복
for (variable of iterable) {
  // code block...
}
  1. for...of 반복문
    • Collection 객체 자체가 Symbol.iterator 속성(property)을 가지고 있어야 동작 가능
    • ES6에 새로 추가된 Collection 기반 반복 구문



✔ 반복문 : while

조건문이 참일 때 코드 블록을 계쏙해서 반복 수행하는 반복문

  • for문에 비해 선언문과 증감문 없이 loop를 수행하며 무한 loop 등을 수행 시 많이 사용
  • 조건문을 코드 블록보다 아래로 옮긴 do...while 반복문도 존재(최소 한 번 수행이 필요할 때)
    // while
    while (Test Expression) {
    // statement block...
    }
    // do...while
    do {
    // statement block...
    } while (Test Expression);



✔ 반복문 제어

// break
let text = "";

for (let i = 0; i < 10; i++) {
  if (i === 3) break;
  text = text + i;
}
console.log(text); // 012
  1. break
    • 반복문 수행 시 코드 블록을 탈출할 때 사용되는 식별자
    • 다중 반복문일 경우 가장 안쪽의 반복문을 종료
    • Label을 통해 다중 반복문을 한 번에 종료 가능
    • Label : 반복문 앞에 콜론과 함께 쓰이는 식별자
// continue
text = "";

for (let i = 0; i < 10; i++) {
  if (i === 3) continue;
  text = text + i;
}
console.log(text); // "0123456789"
  1. continue
    • 반복문 수행 시 코드 블록 실행을 해당 라인에서 중지함
    • 블록 코드를 종료 시킨 후 반복문 내 명시된 조건 판단

 

// label
end: for (let i = 0; i < 3; i++) {
  for (let j = 0; j < 3; j++) {
    console.log(i + "*" + j + "=" + i * j);
    break end;
  }
} // 0 * 0 = 0
  1. label
    • 프로그램 내 특정 영역을 지정하여 별도 이름을 붙이는 식별자
    • break와 continue를 사용하는 반복문 안에서만 사용 가능
    • break나 continue 지시자 위에 있어야 함