반복문
개념
자바스크립트에서 반복적인 작업을 수행할때 작성
구구단 2단 만들기
고정값 : console.log(2 * );
일정한 규칙(1씩 증가)을 갖고 있는 가변값 : 1, 2, 3, 4, 5, 6, 7, 8, 9
console.log(2 * 1);
console.log(2 * 2);
console.log(2 * 3);
console.log(2 * 4);
console.log(2 * 5);
console.log(2 * 6);
console.log(2 * 7);
console.log(2 * 8);
console.log(2 * 9);
자바스크립트에서 제공하는 반복문
while
if문과 비슷
소괄호 안쪽엔 조건 기입
조건 자체가 참일때 중갈호 안에 구문이 실행
구구단 2단 반복문
var num = 1;
while (num < 10) {
console.log(2 * num);
num++;
}
console.log("반복문 종료");

코드 구조
num = 1은 반복문의 시작점
num < 10은 반복문이 어디까지 수행될것인지 범위를 지정해주는 것(조건) - num이 10보다 작을때 중갈호 안에 있는 구문을 실행시켜라
고정값 console.log(2 * )와 가변값 num
2 * 1 = 2가 출력
num ++는 기존의 num 값에 1을 더하는것
num이 2로 변경
num이 2일때 조건이 참 -> 중갈호 구문 실행 2 * 2 = 4가 출력
반복되다가 num이 10이되면 조건이 거짓이 되고 반복문종료
반복문이 끝나고나서 반복문 밑에 있는 코드가 실행
즉 반복문이 거짓이 되기 전까지는 계속 반복문을 반복적으로 돌게됨
반복문 주의점
언젠가는 조건 자체가 거짓이 되는 순간을 만들어줘야한다
그렇지 않으면 조건이 항상 참이 되어서 무한으로 반복되면서 무한루프에 빠지게 된다.
do ~ while
조건을 나중에 따지고 일단 실행시켜(do)
최소 한번의 실행을 보장하는 반복문을 만들고싶을 때 사용
i 값이 조건이 참인지 거짓인지 따지지않고 최초 1번은 실행시키고 그다음에 조건을 따진다
var i = 12;
do {
console.log(i);
i++;
} while (i< 10);

do는 최초실행되고 조건자체가 거짓이기 때문에 더이상 반복구문은 실행되지않음
for
가장많이 사용하는 반복문
하나의 소괄호 안에다가 가변값의 시작 , 조건, 일정한 규칙을 전부다 넣음
소괄호 안에 여러가지 항목을 기입할때 각각의 항목 뒤에 세미콜론으로 마침표를 찍어줘야함.
마지막에 들어가는 규칙은 세미콜론이 없어야됨, 순서는 지켜야함(가변값시작, 조건, 규칙)
중갈호 안에는 가변값과 고정값 넣음
for (var i = 1; i < 10; i++) {
console.log(2 * i);
}

for문 작동원리
i에 1이 할당, 조건-참, 1자체를 i에 넣음 그리고 나서 ++ 2로바뀌고 조건을 다시 따지게 된다.
조건이 참이면 i에 2를넣어주고 다시 ++ 반복..
참고
for는 함수가 아니기 때문에 안에서 작성한 i는 전역변수다
중첩 반복문
구구단 2단 ~ 9단
for(var i = 2; i < 10; i++) {
for(var j = 1; j < 10; j++) {
console.log(i * j);
}
}

동작원리
i는 2 -> 조건 참 {} 안에 있는 반복문이 실행됨
안에 있는 j는 1 -> 조건 참 i에 2 j에 1이 할당
console.log로 2가 찍히고 j가 ++
안쪽에 있는 반복문이 끝날 때까지는 i는 계속 2인 상태이다, 즉 구구단 2단이 완성 될때까지는 i는 변하지 않는다.
2 * 9의 값이 찍히고 안에 반복문이 종료가 되면 바깥쪽을 따지게 된다
i는 ++가 되서 i는 3 -> 조건 참
조건이 참이니 {} 안에 있는 반복문이 실행 된다 (j는 다시 1 상태)
둘다 9가 되면 81이 출력되고 안쪽 반복문 종료 -> i++로 인해서 i는 10이 되고 조건이 거짓이 되어 {}안에 반복문이 실행되지않고 바깥쪽 반복문도 종료하게 된다.