JavaScript

[JavaScript] 반복문 (loop or iterate)

출근침대 2021. 3. 24. 20:57

목록에서 2, 3을 반복해서 쓰고 싶다.

이럴 경우 단순히 복사해서 붙여넣기를 할 수도 있지만

그 반복의 횟수가 100000단위를 넘어서도 복붙을 할것인가?

반복문을 써서 더 쉽게 쓰는 법을 알아보자!

 

1. while

//주로 변수를 정의하는 자리
while(조건문 - 주로 변수의 범위이다){
   반복해서 실행할 코드 - 변수가 늘어나는 규칙을 포함한다
}

 

<body>
    <h1>Loop</h1>
    <ul>
    <script>
        document.write('<li>1</li>');
        var i = 0; 
        while(i < 3){
            document.write('<li>2</li>');
            document.write('<li>3</li>');
            i = i + 1;
        }
        document.write('<li>4</li>');
    </script>
    </ul>
</body>

while뒤에 오는 괄호안의 조건에 대해 boolean값이 오게 되고

그 값이 true면 코드를 반복실행하다가 false가 되면 반복을 멈춘다.

while반복문은 사용하기 쉽지만, 변수와 관련된 자리에 다른 여러 가지 코드들이 개입될 수 있다는 단점도 있다.

①. <li>태그에서 JavaScript를 작동시키기 위해

<script>태그의 document.write 다음에 오는 괄호 안에 작성한다.

document.write는 따옴표 안의 문자를 그대로 출력해준다.

②. 반복해서 쓰고 싶은 부분 앞에서 변수명을 지정한다.

왜냐면 반복할 횟수의 범위를 지정해줘야 하기 때문이다.

여기서는 var i로 지정하였다.

그리고 반복문으로 묶인 첫번째 자리 값부터 반복시킬거니까

var i = 0;

③. 반복문을 종료하는 범위를 지정할 수 있도록

반복하고 싶은 횟수 (예제는 3으로 지정)를 while 옆 괄호안에 다음과 같이 입력한다

: while(i < 3)

④. 그 옆에는 반복하고 싶은 부분의 코드를 중괄호 {}안에 쓴다.

그리고 중괄호를 닫기 직전에

반복문 실행을 반복할 때마다 달라지는 변수값의 규칙을 써준다.

여기서는 i = i + 1;로 지정하였다.

⑤. while의 괄호 안에는 지정한 규칙에 따라 boolean값이 오며

그 값이 범위 내의 값이면 true로 인식되어 중괄호의 코드를 반복해서 실행하고

범위를 넘기게 되면 false로 인식되어 멈추게 된다.

 

 

 

2. do ~while

do문을 먼저 반복해서 실행하고 while문 옆에 써져있는 범위에 다다르면

비로소 while문이 마지막에 실행된다.

 

var happy = 1;

do {
  console.log(happy + "개의 행복");
  ++happy;
} while(happy<5) {
  console.log("완전 행복");
}

// 1개의 행복 2개의 행복 3개의 행복 4개의 행복 완전 행복

반복문 조건에 들어가는 변수는

반복문 바깥쪽에서 선언해줘야 한다.

 

안에 작성했더니 1개의 행복이 무한 반복되어 나옴..........

그도 그럴 것이 함수 맨 위에서 다시 1로 정의가 되니까....

 

 

 

3. for문

형태: for (초기값; 비교식; 증감식) {반복할 코드}

 

괄호안에 들어가는 값들은 반복할 횟수를 지정하는 데에 쓰인다.

꼭 for 옆의 괄호 안에 써주지 않더라도 대체할 수 있는 코드를 바깥에 써준다면

반드시 초기값, 비교식, 증감식을 괄호 안에 써주지 않아도 된다. (옵션임)

 

-초기값: 보통 변수를 지정하게 되며 한 번만 실행

-비교식: 두 번째의 비교 표현식의 평가 결과가 true인 동안 {}안의 코드가 반복되어 실행

-증감식: 코드가 한 번 반복될 때마다 실행

 

var totalOdd = 0;
var totalEven = 0;

for (var n = 1; n <= 25 ;n++) {
    var oddNum = 2*n-1;
    var evenNum = 2*n;
	console.log(oddNum, evenNum);
    
    totalEven += evenNum;
    totalOdd += oddNum;
    
    if (n === 25) {
    	console.log(totalOdd, totalEven);
    }
}

결과값 ↓

더보기

 

1 2

3 4

5 6

7 8

9 10

11 12

13 14

15 16

17 18

19 20

21 22

23 24

25 26

27 28

29 30

31 32

33 34

35 36

37 38

39 40

41 42

43 44

45 46

47 48

49 50

625 650

 

복합대입연산자는 변수를 지정하는 var와는 함께 쓰일 수 없다...

이미 만들어져 있는 변수에만 쓸 수 있다. 조심하자

 

 

 

4. continue

-반복문의 처음으로 분기

-for, for~in, while, do~while에서 사용한다.

for (k = 1; k < 5; k++) {
	if ( k === 2 || k === 3) { //  2.k가 2가 되어서 continue를 만나면 k++로 바로 올라가서 k=3이 된다.
    	continue;
    };
    console.log(k);
}

// 1, 4

 

출처

- https://opentutorials.org/course/3085/18881

- https://opentutorials.org/course/3085/18825

- https://opentutorials.org/course/3085/18827

- https://opentutorials.org/course/3085/18828