선언문(Init Expression)
먼저 만난다. 변수의 대한 초기화가 대표적 ex) let i = o조건문(Test Expression)
은 선언문의 컨트롤 한다. ex) i < 5 (부등호나 나이꼴 사용)
논리적인 리턴 값이 나오도록 한다.조건문
이 true 일때 for 문 안에 코드가 수행된다. Statement Block 수행된다.증감문(Update Expression)
선언문과 조건문에서 컨트롤 해준 변수의 대한 업데이트가 된다.- 이런 식으로 반복 수행된다.
선언문(Init Expression)
은 처음에 최초 1회만 수행되고 그 이후에는조건문(Test Expression)
Statement Block
증감문(Update Expression)
순서대로 수행(반복) 하면서 조건 판단한다.
1. (let i = 0) 변수 초기화를 한다. -->
선언문
2. i < 3 은 true이니 0으로 출력한다. -->조건문
3. i++; 에서 i가 ++를 만나서 1이되서 조건문으로 가서 1 출력한다.
-->선언문
에서조건문
으로 반복 수행한다.
4. 1 출력 후 i++;증감문
을 만나 2 출력한다.
5. 2 출력 후 i++; 해서 3이라는 값으로조건문
을 만난다.
6. 3 < 3 false 이기 때문에 구문을 탈출한다.
총 출력 값은 0, 1, 2이다.
1. 두번째 예시는 i =10; 변수 초기화한다.
2. 10 < 3 은 false 이기 때문에 console.log(i); 코드가 수행되지 않고 for문 종료하게 된다.
let num = 0;
선언문
을 맨 위로 올리고 num++;증감문
을 아래로 빼주면 첫번째 예시와 다른 코드 작성을 할수 있다.
1. let i =0;
선언문
조건 판단하게 되고 아래있는 let j = 0; 코드를 수행한다.
이때, i = 0인 상태이다.
2. 두 번째 for문에서 j가 0에서부터 끝까지 수행이 다되고 코드 블록이 끝난다. (출력 값 0, 1, 2)
3. j의 코드 블록이 끝난 다음 i의증감문
i++;가되서 1로 반복이 된다.
- 조건에 대한 판단을 앞에서 하면
while
- 조건에 대한 판단을 뒤에서 하면
do...while
do...whille 같은 경우는 뒤에서 하니깐 무조건 최초 수행이 된다는 특성이 있다.
(일반적으로 while을 많이 쓴다.)
위 예시 참고
1. A가조건문(Test Expression)
에서 true이면 Statement Block으로 간다.
2. 다시 위로 올라가서 조건 판단을 하면서 무한루프에 빠진다.
3. 종료의 대한 변수 업데이트가 필요하다.
(보통은 Statment Block에서 변수 업데이트를 해서 종류 시킨다.)
- do를 만나 무조건 최초 수행하면 4가 찍히게 된다.
- false이니깐 수행을 안한다.
(false 임에도 불구하고 최초 do에서 실행되었다.여기서 for문과 비슷하다.
let num = 0;
for (; num < 2 ;) {
consol.log(num);
} num++;
1.
break
요소를 작성하여 어느 지점에서 멈추는 코드이다.
if문을 사용해 (i === 3 ) break; 의 해석은 i가 3일때 코드를 종료해라라는 뜻이다.
(출력 값은 0,1, 2)
2.continue
을 사용해서 나온 출력 값이 3을 제외한 값이 출력되었다.
그 이유는 if ( i === 3 ) continue가 수행이 되서 i의 값이 텍스트에 업데이트가 되지않고 그 다음 포분이 이어서 이어진것이다.
1.
break
요소를 넣으면 무조건 j =0;인조건문
일때만 수행이 되고 break 된다.
2.(let j = 0; j < 3, j++;) 일때선언문
에서 true여서 j++;인증감문
으로 간다.
3. 1인 값으로 다시조건문
으로 가는데break
가 걸려서 계속 0 인 상태인 값으로 반복이 된다.
>난 이 문제를 보고 문제의 정답을 찾지 못했다. 절망이였다😰
0~10까지의 정수 중 짝수의 합을 구한뒤 출력해주는 코드를 작성하시오.라는 이 문장에서 아예 풀지 못했다.
- let i = 0; i <= UNTIL_NUM; i++ 의 코드는 작성했다. 왜냐 이거를 배웠기 때문이다.
- 짝수의 합을 구하는 공식 자체가 도통 내 머릿속에서는 떠오르지 않았다.
- 정답을 봐도 왜 저런 답이 나오는지 이해가 안되었다.
연습 문제 풀이
1.if
문을 작성해서 ( i % 2 == 0 ) i의 값이 짝수일때 sum += i; 를 더해라는 뜻이다.
2. i 와 2를 나누면 나머지 값이 0이여야 sum += i; 더할 수 있다는 소리다!
3. i = 0이면 0 % 2의 나머지 값은 0이다. 그래서 맨 처음 값은 0+0 = 0이 나온다.
(% 몫과 나머지 값 계산은 [JavaScript] 산술대입 연산자 참고하자! )
4. i++; 증감을 하여 1인 값으로 1 % 2 = 0.5이다. 여기서 나머지 값은 1이여서 탈락!
5. 1이라는 값으로 i++; 증감을 하여 2 % 2 = 1이다. 나머지 값은 0이여서 2 + 2 = 4 나온다.
6. 이런식으로 계산하여 10 <= 10 true 값이 되어 10 % 2 = 5이다.
나머지 값은 0이고 10 + 0 = 10이 나온다.
7. console.log(sum); 30이라는 값이 나온다.
만약 반복문 for를 이용해서 0~10까지의 정수 중 홀수의 합을 구한 뒤 출력해주는 코드라면?
1. if ( i % 2 ==1 ) sum += i;라는 코드로 변경될 것이다.
2. 위의 풀이와 같이 계산을 하면 1+0=1, 3+0=3, 5+0=5, 7+0=7, 9+0=9 값이 출력된다.
3. console.log(sum); 25라는 값이 나온다.
이 문제는 앞에 배운 예제와 비슷해서 금방 풀 수 있었다.
1. i의 변수 선언이 되었다.
2. 두 번째 for문에서 j가 0에서부터 9까지 수행이 다되고 코드 블록이 끝난다.
3. 그 다음 i++; 증감되어서 3이라는 값으로 업데이트 된다.
>어려웠다. 연습문제-1을 보고 개 멘붕이 왔지만 해석을 보면서 이해하고 벨로그에서 적으면서 다시 한번 또 이해하고 응용도 해보았다.
뿌듯하다!!!!!!!!!! 아자아자