본문 바로가기

자바스크립트 DeepDive

자바스크립트 DeepDive 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 문으로 제공함.
if (조건식) {
   // 조건식이 참이면 이 부분 실행
} else {
   // 조건식이 거짓이면 이 부분 실행
}
  • 대부분의 if ... else문은 삼항 조건 연산자로 바꿔 쓸 수 있음.
var x = 2;
var result;

if (x % 2) {
  result = '홀수';
} else {
	result = '짝수';
}

var result = x % 2? '홀수' : '짝수';

var kind = num ? (num > 0 ? '양수' : '음수') : '영';
  • switch
switch (표현식) {
   case 표현식1:
     실행될 문;
     break;
   case 표현식2:
     실행될 문;
     break;
   default:
     실핼될 문;
}
var month = 11;
var monthName;

switch (month) {
  case 1: monthName = 'January';
  case 2: monthName = 'February';
  default: monthName = 'Invalid month';
}

console.log(monthName);

 

8.3 반복문

  • 반복문은 조건식의 평가 결과가 참인 경우 코드 블록을 실행함.
  • forEach 내부적으로 continue, break 문 x
  • for 문으로 작업
  • 함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 로직 내에 존재하는 조건문반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피하려는 프로그래밍 패러다임.
  • forEach 메서드는 for 문을 대체할 수 있는 고차 함수.
  • 자신의 내부에서 반복문을 실행함.
const numbers = [1, 2, 3];
const pows = [];

numbers.forEach(item => pows.push(item ** 2)); // 1 4 9 
console.log(pows);

 

  • forEach 메서드를 호출한 배열의 요소값, 인덱스, forEach 메서드를 호출한 배열(this)을 매개변수로 가짐.
[1, 2, 3].forEach((item, index, arr) => {
   console.log(`요소값: ${item}, 인덱스: ${index}, this: ${JSON.stringify(arr)}`);
})

 

  • forEach 메서드는 for문과 다르게 break, continue 문을 사용할 수 없음.
  • 희소 배열의 경우 존재하지 않는 요소는 순회 대상에서 제외됨. 
const arr = [1, , 3];

for (let i = 0; i < arr.length; i++) {
   console.log(arr[i]); // 1 '' 3
}

arr.forEach(v => console.log(v)); // 1, 3

 

  • for문- for 문은 조건식이 거짓으로 평가될 때까지 코드 블록을 반복 실행함.
for (변수 선언문 또는 할당문; 조건식; 증감식) {
  조건식이 참인 경우 반복 실행될 문;
}

 

   - while문

      - 주어진 조건식의 평가 결과가 참이면 코드 블록을 계속해서 반복 실행함.

let count = 0;

while(1) {

}
while (count < 3) {
  console.log(count); 
  count++;
}

 

- do-while문

   - 코드 블록을 먼저 실행하고 조건식을 평가함.

   - 코드 블록은 무조건 한 번 이상 실행됨.

 

let count = 0;

do {
  conosle.log(count);
  count++;
} while (count < 3);

 

- break문

   - 레이블 문, 반복문(for, for...in, for...of, while, do...while), switch 문을 탈출함.

   - switch 문의 코드 블록 외에 break 문을 사용하면 SyntaxError(문법 에러)가 발생함.

 

if (true) {
  break;  // SyntaxError: Illegal break statement
}

 

- continue문

  - 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킴.

const string = 'Hello World';
const search = 'l';
let count = 0;

for(let i = 0; i < string.length; i++) {
   if(string[i] !== search) continue;
	 count++;
}

3

 

반응형