forked from qwer0114/Javascript-Deep-Dive-Study
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
144 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,144 @@ | ||
# 제어문 | ||
제어문은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용된다. | ||
|
||
## 블록문 | ||
0개 이상의 문을 중괄호로 묶은 것이다. | ||
자바스크립트는 블록문을 하나의 실행 단위로 취급한다. | ||
|
||
{ | ||
var foo = 10; | ||
} | ||
|
||
## 조건문 | ||
조건문은 주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행을 결정한다. | ||
|
||
### if ...else문 | ||
주어진 조건문의 평가 결과, 즉 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정한다. | ||
|
||
if (조건식1) { | ||
//조건식1이 참이면 이 코드 블록이 실행된다. | ||
} else if (조건식2) { | ||
//조건식2이 참이면 이 코드 블록이 실행된다. | ||
} else { | ||
//조건식이 모두 거짓이면 이 코드 블록이 실행된다. | ||
} | ||
|
||
if문의 조건식은 불리언 값으로 평가되어야 한다. 만약 값으로 평가되면 암묵적으로 불리언 값으로 강제 변환된다. | ||
|
||
### switch 문 | ||
|
||
sitch문은 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다. | ||
|
||
let number = 2; | ||
|
||
switch (number) { | ||
case 1: | ||
console.log("숫자는 1입니다."); | ||
break; | ||
case 2: | ||
console.log("숫자는 2입니다."); | ||
break; | ||
case 3: | ||
console.log("숫자는 3입니다."); | ||
break; | ||
default: | ||
console.log("숫자는 1, 2, 3이 아닙니다."); | ||
break; | ||
} | ||
|
||
switch문에서 break문을 사용하지 않으면 switch문을 탈출하지 않고 끝까지 모든 case문을 실행하다 defualt경우로 넘어가게 된다. | ||
|
||
## 반복문 | ||
반복문은 조건식의 평가 결과가 참인 경우 코드 블록을 실행한다. 그 후 조건식을 다시 평가하여 여전히 참인 경우 코드 블록을 다시 실행한다. | ||
|
||
### for문 | ||
for문은 조건식이 거짓으로 평가될 때까지 반복 실행한다. | ||
|
||
for (let i = 0; i < 2; i++) { | ||
console.log(i) | ||
} | ||
|
||
//0 | ||
//1 | ||
|
||
for문에 어떤 식도 선언하지 않으면 무한 루프가 된다. | ||
|
||
for (;;) {...} | ||
|
||
### while문 | ||
while문은 주어진 조건식의 평가 결과가 참이면 코드 블럭을 계속해서 반복 실행한다 | ||
for문은 반복 횟수가 명확할 때 주로 사용하고 while문은 반복 횟수가 불명확할 때 주로 사용한다. | ||
|
||
let number = 1; | ||
|
||
while (number <= 5) { | ||
console.log(number); | ||
number++; | ||
} | ||
|
||
// 1 | ||
// 2 | ||
// 3 | ||
// 4 | ||
// 5 | ||
|
||
조건식에 true를 넣으면 무한루프가 된다 | ||
|
||
while(true) {...} | ||
|
||
무한 루프 내에 if문으로 조건을 만들고 break문으로 탈출한다. | ||
|
||
### do... while문 | ||
코드 블록을 먼저 실행하고 조건식을 평가한다. 따라서 코드 블록은 무조건 한 번 이상 실행된다. | ||
|
||
let number = 1; | ||
|
||
do { | ||
console.log(number); | ||
number++; | ||
} while (number <= 5); | ||
|
||
// 1 | ||
// 2 | ||
// 3 | ||
// 4 | ||
// 5 | ||
|
||
## break문 | ||
break문은 코드 블록을 탈출한다. 레이블 문, 반복문, switch문의 코드 블록 외에 break문을 사용하면 SyntaxError가 발생한다. | ||
|
||
> 참고로 레이블 문이란 식별자가 붙은 문을 말한다 | ||
> | ||
> foo: console.log("foo"); | ||
> | ||
레입블 문은 프로그램의 실행 순서를 제어하는 데 사용한다. 사실 switch문의 case문과 default문도 레이블 문이다. | ||
|
||
outerLoop: for (let i = 0; i < 3; i++) { | ||
for (let j = 0; j < 3; j++) { | ||
if (i === 1 && j === 1) { | ||
break outerLoop; // outerLoop 레이블이 붙은 외부 루프를 탈출 | ||
} | ||
console.log(`i = ${i}, j = ${j}`); | ||
} | ||
} | ||
|
||
// i = 0, j = 0 | ||
// i = 0, j = 1 | ||
// i = 0, j = 2 | ||
// i = 1, j = 0 | ||
|
||
## continue문 | ||
continue문은 반복문의 코드 블록 실행을 현 시점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다. | ||
break문처럼 반복문을 탈출하지는 않는다. | ||
|
||
for (let number = 1; number <= 5; number++) { | ||
if (number % 2 !== 0) { | ||
continue; // number가 홀수이면 다음 반복으로 넘어감 | ||
} | ||
console.log(number); | ||
} | ||
|
||
// 2 | ||
// 4 | ||
|