해당 게시물은 "모던자바스크립트 Deep Dive(위키북스)" 저서를 참고 및 인용 하였음을 알려드립니다.
코드 블록
또는 블록
이라고 부른다.// 블록문
{
var foo = 10;
}
// 제어문
var x = 1;
if (x < 10) {
x++;
}
// 함수 선언문
function sum(a, b) {
return a + b;
}
불리언 값
으로 평가될 수 있는 표현식이다.
- true일 경우
if 문
의 코드 블록이 실행되고,- false일 경우
else 문
의 코드 블록이 실행된다.
if (조건문) {
// 조건식이 참이면 이 코드 블록이 실행된다.
} else {
// 조건식이 거짓이면 이 코드 블록이 실행된다.
}
- 조건식을 추가하고 싶을 때는
else if
문을 사용한다.
if (조건문) {
// 조건식1이 참이면 이 코드 블록이 실행된다.
} else if {
// 조건식2이 참이면 이 코드 블록이 실행된다.
} else {
// 조건식이 거짓이면 이 코드 블록이 실행된다.
}
// x가 짝수이면 result 변수에 문자열 '짝수'를 할당하고, 홀수이면 문자열 '홀수'를 할당한다.
var x = 2;
var result;
if( x % 2) { // 2 % 2는 0이다. 이때 0은 false로 암묵적 강제 변환된다.
result = '홀수';
} else {
result = '짝수';
}
console.log(result); // 짝수
var x = 2;
// 0은 false로 취급한다.
var result = x % 2 ? '홀수' : '짝수';
console.log(result); // 짝수
var x = 2;
// 0은 false로 취급한다.
var kind = num ? (num > 0 ? '양수' : '음수') : '영';
console.log(result); // 양수
case
문으로 실행 흐름을 옮긴다.default
문으로 이동한다. default 문은 선택사항이다.
- if ... else 문 : 참 , 거짓으로 실행할 코드 결정
- swith 문 : 문자열, 숫자 등 다양한 상황에 따라 실행할 코드 결정
switch (표현식) {
case 표현식1:
switch 문의 표현식과 표현식1이 일치하면 실행될 문;
break;
case 표현식2:
switch 문의 표현식과 표현식2이 일치하면 실행될 문;
break;
default:
switch 문이 표현식과 일치하는 case 문이 없을 때 실행될 문;
}
for (변수 선언문 또는 할당문; 조건식; 증감식) {
조건식이 참인 경우 반복 실행될 문;
}
변수 선언문
, 조건식
, 증감식
은 모두 옵션이므로 반드시 사용할 필요는 없다. 단, 어떤 식도 선언하지 않으면 무한루프가 된다.// 무한루프
for (;;) {...}
- for 문 내에 for 문을 중첩해 사용할 수 있다. 이를 중첩 for 문이라 한다.
for (var i + 1; i <= 6, i++){
for (var j = 1; j <= 6; j++){
if (i + j === 6) console.log(`[${i}. ${j}]`);
}
}
// [1, 5]
// [2, 4]
// [3, 3]
// [4, 2]
// [5, 1]
- for 문 : 반복 횟수가 명확할 때 주로 사용하고
- while 문 : 반복 횟수가 불명확할 때 주로 사용한다.
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행한다.
while (count < 3) {
console.log(count); // 0 1 2
count++;
}
while (true) { ... }
var count = 0;
// count가 3보다 작을 때까지 코드 블록을 계속 반복 실행한다.
do {
console.log(count); // 0 1 2
count++;
} while (count < 3);
레이블 문
, 반복문
(for, for...in, for...of, while, do...while) 또는 switch 문
의 코드 블록을 탈출할 때 사용된다.if (true) {
break; // Uncaught SyntaxError: Illegal break statement
// foo라는 레이블 식별자가 붙은 레이블 문
foo: console.log('foo');
- 중첩된 for 문의 내부 for 문에서 break 문을 실행
→ 내부 for 문을 탈출하여 외부 for 문으로 진입한다.
- 내부 for 문이 아닌 외부 for 문을 탈출하려면 레이블 문을 사용한다.
outer: for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
// i + j === 3이면 outer라는 식별자가 붙은 레이블 for 문을 탈출한다.
if (i + j === 3) break outer;
console.log(`inner [${i}, ${j}]`);
}
}
console.log('Done!');
var string = 'Hello World.';
var search = 'l';
var count = 0;
// 문자열은 유사 배열이므로 for 문으로 순회할 수 있다.
for (var i = 0; i < string.length; i++) {
// 'l'이 아니면 현 지점에서 실행을 중단하고 반복문의 증감식으로 이동한다.
if (string[i] !== search) continue;
count++;
}
console.log(count); // 3