멋쟁이v의 개발일지

[Javascript] 반복문 본문

0년차/Javascript

[Javascript] 반복문

멋쟁이v 2023. 4. 29. 15:39
728x90
320x100
📕

[목차]


01. for 문

💡
주어진 조건식의 평가 결과가 거짓이 될때까지 코드 블럭을 반복 실행합니다.
  • for 문 사용 예제

  • [코드예제] for문.js
    for(let i = 0; i < 5; i++) {
        console.log(i); // 0 1 2 3 4
    }
    
    // 분리
    let j = 0;
    for(; j < 5;) {
        console.log(j); // 0 1 2 3 4
        j += 1;
    }
    
    // if문을 합친것과 같음
    let k = 0;
    if(k < 5) {
        console.log(k); // 0
        k += 1; // k = 1
    }
    if(k < 5) {
        console.log(k); // 1
        k += 1; // k = 2
    }
    if(k < 5) {
        console.log(k); // 2
        k += 1; // k = 3
    }
    if(k < 5) {
        console.log(k); // 3
        k += 1; // k = 4
    }
    if(k < 5) {
        console.log(k); // 4
        k += 1; // k = 5
    }
    if(k < 5) { // k = 5여서 실행 안됨
        console.log(k);
        k += 1;
    }

02. while / do while

💡
주어진 조건식의 평가 결과가 거짓이 될때까지 코드 블럭을 반복 실행합니다.
  • while문 사용 예제

    ➡️ while 조건식이 참인 경우 무한 반복.

    ➡️ do, while 사이에 있는 코드들을 무조건 한번 실행(while문이 거짓이여도)

    ➡️ 탈출 방법 : 조건식이 거짓일 경우, break문

  • [코드예제] while문.js
    // while
    let cnt = 0;
    while (cnt <= 5) {
        console.log(cnt);
        cnt += 1;
    }
    
    // do while
    let result = 0;
    do {
        console.log(result); // 0 1 2 3 4 5
        result += 1;
    } while (result <= 5);
    console.log(result); // do while 탈출 후 6 출력

03. break

💡
레이블 문, 반복문 또는 switch 문의 코드 블록을 탈출할 수 있습니다. 이 외에 사용하면 문법오류!
  • break 사용 예제

  • [코드예제] break.js (for문 let vs var)
    // 가장 가까운 for문의 블록을 빠져나온다.
    for(let i = 0; i < 5; i++) {
        console.log(i); // 0 1
        if(i==1) break; // 1일때 break를 만나서 for문을 빠져나감
    }
    console.log(i); // 오류! -> let은 블록 안에서 재선언 되면 지역변수로 휘발.
    
    // var를 사용하지 않는 이유
    for(var j = 0; j < 5; j++) {
        console.log(j); // 0 1 2
        if(j==2) break; // 2일때 for문 탈출
    }
    console.log(j); // 2 -> for문 안에서 재선언 되도 블록과 관계없이 문이 실행

04. continue

💡
반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 이동합니다. (skip)
  • continue 사용 예제

  • [코드예제] continue.js
    for (let i = 0; i < 5; i++) {
        if(i==1) continue; // 1일때 continue를 만난다.
        console.log(i); // 0 2 3 4 (1은 스킵된다.)
    }

05. 레이블

💡
➡️ 식별자가 붙은 문장입니다. (=블록에 이름을 정한다.) ➡️ { }문, 반복문, switch문에서 사용. ➡️ 프로그램의 실행순서를 제어하는데 사용. ➡️ 하지만 프로그램의 흐름이 복잡해져서 가독성이 저하된다.
  • [코드예제] 레이블.js
    outter : { // 블록에 outter라는 이름을 붙임
                let i = 10;
                break outter; // outter라는 블록을 빠져나감
                console.log(i); // 실행 됨
            }
    
    outterFor : for(let i = 2; i <= 9; i++) {
                    console.log(i); // 2
                    for(let j = 1; j <= 9; j++) {
                        console.log(j); // 1
                        if (i*j==4) break outterFor; // i*j가 4이면 outterFor블록을 탈출
                        // if(i*j == 4) break; i*j가 4이면 해당위치에서 가까운 반복문을 탈출
                        console.log(`${i}X${j} = ${i*j}`); // 2X1 = 2 까지만 출력
                    }
                }

06. 반복문 실습

  • [코드예제] 반복문 실습(구구단)
    let result = ''; // 담아서 출력할 변수
    let digit1 = 9; // 초기값
    
    while(digit1 > 0) {  // for문 조건식
        result += `2 X ${digit1} = ${2*digit1}\n` // for문 반복할 코드
        digit1 -= 1; // for문 증감식
    }
    console.log(result); // 2단 역순
    // 2 X 9 = 18
    // 2 X 8 = 16
    // ...
    
    
    let result2 = ''; // 담아서 출력할 변수
    let times = 2; // 초기값 2단부터
    let digit = 1; // 초기값 1
    while(times < 10) { // 2단 ~ 9단
        if(digit < 10) { // 1 ~ 9
                result2 += `${times} x ${digit} = ${times * digit}\n`;
                digit += 1; // 1 2 3 4 5 .. 9
        } else{ // 9가 넘어가면
            digit = 1; // 다시 1로 초기화
            times += 1; // 다음 단
        }
    
        if(times > 2) { // 2가 넘어가면
            break; // while문 탈출
        }
    }
    console.log(result2);
    
    /*
    	한자리 일 경우에 01 02 03 04 ..
    	formatResult = '';
    	if((times * digit) < 10) {
    		formatResult = `0${times * digit}`;
    	}else{
    		formatResult = `${times * digit}`;
    	}
    */
    
    
    // 구구단 전체 출력 (콘솔 8번만 찍히게)
    for (let i = 2; i < 10; i++){
        let timesPrint = `----${i}단----\n`;
        for(let j = 1; j < 10; j++) {
            let result = (i*j) < 10 ? `0${i*j}` : `${i*j}`;
            timesPrint += `${i} x ${j} = ${result}\n`;
        }
        console.log(timesPrint);
    }

  • [코드예제] 반복문 실습(짝수 구하기)
    let num = '';
    let result4 = 0; // 초기값
    let isFrist = true; // 초기설정
    for (let i = 1; i <= 100; i++) {
    	if (i%2 == 0) { // 나머지가 0일 경우
    		if (isFrist) { // 한번만 실행시킬 코드
    			num += i; // 처음값 2
    			isFrist = false;
    		} else {
    			num += `, ${i}` // 이후 (, 값)
    		}
    		result4 += i; // 짝수들의 합
    	}
    }
    console.log(`짝수 : ${num}\n짝수들의 합 : ${result4}`);

  • [코드예제] 반복문 실습(별)
    // 중첩 반복문 사용
    let result5 = '';
    for(let i = 0; i < 5; i++) {
        for(let j = 0; j <= i; j++) {
            result5 += '*';
        }
        result5 += '\n';
    }
    console.log(result5);
    
    // 반복문 1개
    let star = '';
    let result5 = '';
    for(let i = 0; i < 5; i++) {
        star += '*';
        result5 += `${star}\n`;
    }
    console.log(result5);


tag : #javascript #반복문 #for #while #break #continue #레이블


Uploaded by N2T

728x90
320x100
Comments