자바스크립트 기초 정리(반복문 while, do while, for, for in, for of) - 3📘

2023. 2. 2. 01:28·JavaScript

반복문이란?

반복문도 하나의 제어문으로써 같은 명령을 일정 횟수만큼 계속 반복할 수 있게 만드는 실행문입니다. 대부분의 프로그램이 반복을 요하는 경우가 많기 때문에 엄청 많이 사용되는 실행문이라고도 할 수 있습니다

 

Fig. 1. 예시 반복문 미사용

 

다음과 같은 출력을 해야하는 경우 Fig. 1 과 같이 보기만 해도 너무 번거로워 보입니다. 이와 같은 출력을 Fig. 2와 같이 간결하게 작성해 줄 수 있는 장점이 있습니다!

 

Fig. 2. 예시 반복문 사용

 

Fig. 2 과 같이 for(변수 선언 = n; n < 10; n++){명령} 형식으로 작성할 수 있습니다. 일반적으로 변수는 i, j, k로 설정하고 0부터 시작합니다. 왜 1부터 세지 않지?라고 생각 하실 수 있는데,  배열(array) 인덱스가 0 부터 시작하는 규칙 때문입니다! 

 

var arr = [red, blue, green] // red는 0번째, blue는 1번째, green은 2번째

 

반복문의 형태

반복문의 형태는 다음 다섯가지로 구분해 볼 수 있습니다

 

  • while 문 
  • do while 문
  • for 문
  • for in 문
  • for of 문

 

while 문

간단한 예제로 prompt 함수를 통해 주문할 만큼의 커피 수량을 입력하면, '총커피가 몇 잔 주문되었는지' 출력해 주는 코드를 간단히 작성해 보았습니다. order 변수가 1,2,3,..., n 이면 1,2,3,..., n잔 주문되었다고 출력이 되고 -1을 넣으면 while문을 탈출합니다

*prompt()를 통해 입력을 할 수 있습니다

 

var order = 0 // 주문 변수 선언

while(order == 0){  // 주문 변수가 0으로 설정되어 있으면
    order = prompt('커피를 몇잔 주문하시겠습니까?') // 몇잔 주문할지 입력
    if(order == -1){ // -1을 입력하면 while문을 나감
    	break
    }else{ //아니면 계속 반복
    	console.log('총 커피가' + order + '잔 주문되었습니다') // 출력
        order = 0
    }
}
// 입력값 : n
// 출력값 : 총 커피가n잔 주문되었습니다
// 입력값 : -1
// 출력값 :

 

 

while 문을 간단히 설명하면 order == 0라는 표현식을 만족하면 while 문은 끝없이 주문(무한 루프)을 받습니다. 그래서 어떠한 값을 입력받았을 때, while 문을 나올 수 있도록 꼭 설정해주어야 하는데, 그 값이 - 1이고 그 외에 모든 값은 입력과 출력을 반복합니다


 

do while 문

var total_order = 0 // 총 주문

do{  // 일단 무조건 1번은 실행
    var order = prompt('커피를 몇잔 주문하시겠습니까?')
    total_order = Number(order) + N(total_order)
    console.log('총 커피가' + total_order + '잔 주문되었습니다')
}while(total_order < 20) // 총 20잔의 커피가 주문될때까지 do로 돌아간다

 

do while 문과 while 문의 다른 점은 while 문은 표현식의 참/거짓에 따라 명령을 실행하거나 하지 않지만, 

do while 문은 do 부분의 명령을 무조건 한 번은 실행을 하고 while 문 표현식의 참/거짓을 검사한다는 점입니다. 그 이후 다시 do 부분으로 돌아가 표현식을 만족하지 않을 때, 종료합니다


 

for 문

 

for 문은 while 문이나 do while 문과는 또 다르게 초기식, 표현식, 증감식을 포함하는 반복문입니다

 

var order = ['곱창', '사이다', '계란찜'] // 주문 

for(var i = 0; i < order.length; i++){
    if(i == 0){
        console.log('주문이 들어왔어요!')
    }
    console.log('주문 내용은 ' + order[i] + '입니다')
}
// 출력 : 주문이 들어왔어요!
//        주문 내용은 곱창입니다
//        주문 내용은 사이다입니다
//        주문 내용은 계란찜입니다

for 문은 다양하게 많이 쓰이는데, 표현식에 배열의 크기(order.length)라는 제약을 통해 배열의 크기나 내용을 출력할 때 많이 쓰입니다. if 문으로 처음에 '주문이 들어왔다'라는 것을 한번 출력하고, 그 후에order [i]를 통해 배열 안의 값을 하나하나 불러오는 코드입니다. 위와 같이 배열의 길이가 3으로 짧으면 i < 3이라고 우리가 설정할 수도 있지만, 배열의 크기가 커지게 된다면 일일이 배열 안의 값이 몇 개가 있는지 셀 수 없기 때문에, length라는 함수를 통해 보다 쉽게 파악할 수 있습니다


 

for  in문

 

for in 문부터는 객체라는 개념이 등장하는데, 자바스크립트에서 객체란 우리가 살아가는 이 세상에 존재하는 것들의 속성을 담아놓은 데이터라고 할 수 있습니다. 예를 들어 객체 이름이 홍길동이라고 하면, 이름은 홍길동, 성별은 남자, 키는 180과 같은 프로퍼티를 가지고 있는 데이터입니다. 중괄호로 표현합니다 { }

 

var hong = ['홍길동', '남자', '180']  // 배열

for(var i = 0; i < hong.length; i++){
    console.log('출력 : ' + hong[i] + '입니다')
}

for (var i in hong){ // i는 배열의 인덱스를 저장합니다
    console.log('출력 : ' + i + '입니다')
}

for (var i in hong){   // 맨위의 코드와 같이 동작하는 for in 문
    console.log('출력 : ' + hong[i] + '입니다')
}

출력 : 홍길동입니다
출력 : 남자입니다
출력 : 180입니다
출력 : 0입니다
출력 : 1입니다
출력 : 2입니다
출력 : 홍길동입니다
출력 : 남자입니다
출력 : 180입니다

 

for in 문은 객체의 프로퍼티를 가지고 오는 실행문입니다

for in 문은 for 문과 다르게 i ++ , i -- 같은 증감식과 표현식을 포함하지 않습니다. 그리고 hong이라는 배열을 선언했지만, for in 문안에서는 객체로 처리하는데, var hong = {0 : '홍길동', 1 : '남자', 2 : '180'}이라는 객체와 같다고 생각하면 됩니다. 그래서 i 값만 출력한다면, 0,1,2 프로퍼티를 출력하게 되고, hong[i] 를 출력할 때 비로소 배열의 값을 출력하는 것을 볼 수 있습니다.

 

var hong = {이름 : '홍길동', 성별 : '남자', 키 : 180} // 객체

for (var i in hong){   // i는 객체의 프로퍼티(이름, 성별, 키)
    console.log('출력 : ' + i + '입니다')
}

for (var i in hong){  // hong[i]는 프로터티의 값(홍길동, 남자, 180)
    console.log('출력 : ' + i + ':' + hong[i] + '입니다')
}

// 출력 : 이름입니다
// 출력 : 성별입니다
// 출력 : 키입니다
// 출력 : 이름:홍길동입니다
// 출력 : 성별:남자입니다
// 출력 : 키:180입니다

 

for  of 문

 

for of 문은 반복가능한 객체에 대해서 반복을 합니다. iterable 객체라고 말하는데,  Array , Map , Set , String , TypedArray , arguments 객체등을 iterable 객체라고 하고 iterable 객체가 되기 위해서는 조건 또한 따릅니다. 하지만 지금 다루기에는 좀 깊이가 있어서, 이런 게 있구나 생각하시면 될 것 같습니다. 

 

var hong = ['홍길동', '남자', '180']  // 배열

for(var i = 0; i < hong.length; i++){
    console.log('출력 : ' + hong[i] + '입니다')
}

for (var i of hong){ // i는 배열의 인덱스 값을 저장합니다
    console.log('출력 : ' + i + '입니다')
}

for (var i of hong){   // i == '홍길동' , hong['홍길동']은 존재하지 않는다
    console.log('출력 : ' + hong[i] + '입니다')
}

// 출력 : 홍길동입니다
// 출력 : 남자입니다
// 출력 : 180입니다
// 출력 : 홍길동입니다
// 출력 : 남자입니다
// 출력 : 180입니다
// 출력 : undefined입니다

 

Array 배열은 반복가능한 객체이므로 for of 문을 통해 반복할 수 있습니다.

위에 코드와 같이 for of 문은 for in 문과는 또 다르게,  i에 프로퍼티값이 저장되고, 가장 마지막 hong [i] == hong ['홍길동']은 존재하지 않기 때문에 출력값이 undefined가 됩니다


저작자표시 비영리 변경금지 (새창열림)
'JavaScript' 카테고리의 다른 글
  • ES6+ 자바스크립트 중요 개념 정리 🔑 - DOM 선택 및 조작
  • ES6+ 자바스크립트 중요 개념 정리 🔑- 콘솔과 경고, 변수, get 메서드, DOM 요소 쿼리
  • 자바스크립트 기초 정리(조건문 if else, switch) - 2📘
  • 자바스크립트 기초 정리(js란, var, let, const) - 1📘
Jelong
Jelong
커스텀 웹: https://jaehong-park.com Github: https://github.com/qkrwoghd04
  • Jelong
    24/7 Developer's Note
    Jelong
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Software Engineering
      • Ubuntu
      • Network
      • JavaScript
      • Web
      • Interaction Design
      • React Native
      • React
      • Algorithm
      • Java
      • Database design
      • IT Trend
      • TroubleShooting
      • AWS
      • Interview
      • LG CNS AM CAMP 1기
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    BST
    이진트리
    화이트 박스 테스트
    JS
    prototyping
    AWS
    소프트웨어 공학
    자바스크립트
    데이터 구조
    html
    mininet
    티스토리챌린지
    자바
    알고리즘
    expo
    java
    typescript
    React
    미니넷
    GPT-4
    알고리즘 분석
    javascript
    Queues
    ChatGPT
    블랙 박스 테스트
    css
    오블완
    frontend
    heap
    generic
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jelong
자바스크립트 기초 정리(반복문 while, do while, for, for in, for of) - 3📘
상단으로

티스토리툴바