반응형
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
반응형
'자바스크립트 DeepDive' 카테고리의 다른 글
자바스크립트 DeepDive 10장 객체리터럴 (0) | 2022.10.09 |
---|---|
자바스크립트 DeepDive 9장 타입 변환과 단축 평가 (1) | 2022.10.08 |
자바스크립트 DeepDive 7장 연산자 (0) | 2022.10.01 |
자바스크립트 DeepDive 6장 데이터 타입 (1) | 2022.10.01 |
자바스크립트 DeepDive 5장 표현식과 문 (0) | 2022.09.27 |