[ ᴊᴀᴠᴀꜱᴄʀɪᴘᴛ ] 반복문

NewHa·2023년 8월 24일

🧡 반복문

  • 코드를 불필요하게 중복해서 작성하지 않고 컴퓨터에게 의도한 만큼 같은 동작을 반복하게 하는 방법이 반복문이다.코드를 간결하게 작성할 수 있는 장점이 있다.
  • 반복문 본문이 한번 실행되는 것을 iteration(이터레이션)이라고 부른다.
  • 조건이 truthy인 동안 반복해서 코드가 실행되고, 조건이 falsy가 되면 종료된다.

💚 for 문

  • 조건식만 바꾸면 되기 때문에 for문을 사용하면 코드를 몇 번 반복하여 실행할 지 결정할 수 있다.
// 1부터 5까지의 수를 모두 더하는 코드

let result = 0;

for (let i = 1; i <= 5; i++) {
   result = result + i ;
}
console.log(result);  //15
  • 초기값(begin) : 증감식 반복횟수를 카운트하는 역할을 하는 변수, 이 때 변수는 정수를 의미하는 ‘integer’의 약자인 i를 주로 사용한다. 반복문의 코드블록 내부에서만 유효하다.

  • 조건식(condition) : 코드블록 내부의 코드를 실행 여부를 결정한다. true인 경우 코드를 실행하고, false인 경우 반복문을 종료한다. / 비교뿐만 아니라 표현식, 변수가 모두 올수있고, 평가되어 불린값으로 변경된다.

  • 증감식(step) : 코드블록 내부의 코드를 실행한 후 초기값으로 선언된 변수를 증가 또는 감소시키기 위한 표현식이다.

  • ‘1부터 5까지의 수를 모두 더하는 코드’의 진행 순서는 다음과 같다.
  1. for문 내부에서 유효한 변수 i를 선언하고 1을 할당한다.
  2. 조건식에 따라 i가 5보다 작거나 같은지 여부를 평가한다. 현재 i는 1이므로 i <= 5는 true로 평가된다.
  3. 코드블록 내부에서 result = 0 + 1 이 실행되어 1이 출력된다.
  4. 증감식에 따라 i가 1 증가하여 i=2 가 된다.
  5. 조건식에 따라 i가 5보다 작거나 같은지 여부를 평가하고 i는 2이므로 true로 평가되어 코드블록 내부가 실행되어 result = 1 + 2가 되어 3이 출력된다.
  6. 증감식에 따라 i가 증가하고, 조건식에 따라 평가하여 코드블록 내부의 코드가 실행되는 것을 반복한다.
  7. 증감식에 따라 i가 6이되면, 조건식 i <= 5가 false로 평가되어 반복문이 종료된다.
  8. for문을 나와 console.log(result)가 실행되어 15를 출력한다.
  • 반복문 안에서 변수 i 를 선언하는 것을 ‘인라인 변수 선언’이라 하고, 이렇게 선언한 변수는 반복문 안에서만 접근 할 수 있다. 반복문 외부에서 선언된 변수를 반복문에서 사용하는 방식으로도 사용할 수 있으니 선택해서 사용한다.
    for (let i = 0; i <= 10; i++) { ... } // 인라인 변수 선언
    
    let num = 0;
    for(num=0; num <=10; num++( {...} // 정의된 변수를 사용할 수도 있다.
    //-> 이 떄 이미 num이 선언되고 할당되어 있으므로 초기값을 생략해서 적을 수도 있다.
    for(; num <=10; num++) {...} 


증감연산자

  • i++ : 다른 연산을 수행하고 증가, i+=1, i=i+1 과 같은 의미이다.
  • i-- : 다른 연산을 수행하고 감소, i-=1, i=i-1과 같은 의미이다.
  • ++i : 증가하고 다른 연산을 수행
  • --i : 감소하고 다른 연산을 수행
let i = 1;

result = i++ ; // i의 값을 1 증가시킨다. // 2
rewult = i-- ; // i를 1 감소시킨다. // 0
rewult = ++i ; // i의 값을 1 증가시키고, ++i의 값도 1 증가한다. // 3
rewult = --i ; // i를 1 감소하고 --i 자신도 1 감소한다. // -1


💚 반복문 활용하기

  • for문으로 구구단 작성하기
let num = 3;
if(num >= 2 && num <=9) {
   for (let i = 1; i <= 9; i++) {
        console.log(num = i);
}else{
   console.log('2와 9 사이의 수를 입력하세요.');
}

문자열과 반복문

  • 문자열에도 반복문을 활용할 수 있다. for문의 초기화, 조건식, 증감식은 모두 숫자 타입과 관련이 있다. → 문자열의 각 순서인 인덱스(indexOf())와 문자열의 길이(length())를 이용해야 한다.
  • 문자열의 길이가 매우 길거나 알 수 없는 상태일 때 : 문자열의 마지막 문자의 인덱스는 문자열의 길이보다 1만큼 작다는 것을 이용한다. → i <= str.length - 1 (또는 i < str.length)로 조건식을 작성하면 문자열의 끝까지 순회하는 반복문이 된다.
  • 문자열의 길이보다 큰 인덱스를 넣어도 문법적 오류는 발생하지 않는다. 하지만 이 경우 프로그램 오류시 찾아내기 어렵고 원하는 결과가 나오지 않을 수 있다. 정상적으로 작동이 되더라도 나중에 문제되면 찾기 어려워서 주의해야 한다.


💚 반복문과 조건문

  • 특정 조건에 따라 반복이 진행되도록 할 수 있다. 반복문 내에 if문을 사용해 반복이 진행되는 동안, 특정 조건에 따라 문제를 해결하도록 할 수 있다.
//주어진 문자열의 문자들 중, 인덱스가 짝수인 문자만 출력하는 코드

let str = 'hello JavaScript world!'

for (let i =0; i < str.length; i++) {  //주어진 문자열을 반복하는 코드
   if (i % 2 === 0) {                  // 짝수 인덱스를 골라내는 조건문
       console.log (str.[i]);          //골라낸 짝수 인덱스번호의 문자를 출력
   }
}


💚 반복문의 중첩

  • 반복문 내부에 또 다른 반복문을 사용하여 중첩하여 사용하는 것도 가능하다.
for (let i = 0; i <=2; i++) {
  for ( let j = 0; j <=2; j++) {
     console.log(`i는 ${i}, j는 ${j} 입니다.`);
  }
}

// i는 0, j는 0입니다.
// i는 0, j는 1입니다.
// i는 0, j는 2입니다.
// i는 1, j는 0입니다.
// i는 1, j는 1입니다.
// i는 1, j는 2입니다.
// i는 2, j는 0입니다.
// i는 2, j는 1입니다.
// i는 2, j는 2입니다.

  • 외부 반복문의 초기화와 조건식 평가 후 내부반복문이 실행된다. → 내부반복문의 초기화와 조건식평가, 내부코드가 실행되고 반복하다 내부조건식이 false가 되면 종료하고 다시 외부반복문의 증감식과 조건식평가가 이루어진다. 증감후 외부반복문의 조건식이 true이면 다시 내부반복문을 순환한다.외부반복문의 조건식이 false가 되면 모든 반복문이 종료한다.

  • 2개의 반복문이 중첩된 경우 이중반복문, 3개의 반복문이 중첩된 경우 삼중반복문이라고 부른다.



💚 while 문

  • for문과 다르게, 조건식만 입력한 후 조건식이 true인 경우 내부 코드를 반복하여 실행한다.
  • while문을 사용할 때는 무한루프를 주의해야 한다. 반복문이 종료되느 조건식이 항상 참으로 평가되어 무한히 반복되는 현상을 말한다. → 항상 조건식이 false로 평가되는 순간이 있는지 주의해야 한다. → 브라우저는 이런 무한반복을 멈추게 해주는 실질적인 수단을 제공하고 있다.
  • 본문이 한 줄이면 대괄호를 생략할 수 있다.


do …while 문

  • while 뒤에 오는 조건식이 true인 동안 do 뒤에 오는 코드블록 내부의 코드를 반복하여 실행한다. 단, 이 경우 .do의 코드블록 내부의 코드가 최소 한 번은 실행된다. → 실행 한 후 조건을 판단하여 반복
do {
	console.log('코드블록 내부의 코드는 최소 한 번은 실행됩니다.') 
	// '코드블록 내부의 코드는 최소 한 번은 실행됩니다.'
} while (false)

for문과 while문

  • 용도를 명확하게 구분하진 않으나, 주로 사용하는 상황이 있다.
  • for문을 사용하는 경우
    • 반복 횟수가 비교적 명확할 때
    • 배열, 문자열 내부순회할 때
    • 반복문의 중첩이 필요할 때
  • while문을 사용하는 경우
    • 반복 횟수가 명확하지 않을 때


💚 반복문 추가 요소

  • 조건식이 falsy가 되기 전에, break를 사용해 원하는 때에 빠져나올 수 있다. → 반복문의 시작이나 끝이 아닌 본문 중간에서 조건을 확인해야 하는 경우 사용하면 좋다.
  • continue는 반복문을 멈추고 빠져나오진 않지만, 실행중이던 이터레이션을 멈추고 다음 이터레이션으로 넘어간다.(해당 조건을 통과하는 것)
    for (let i = 0; i <= 10; i++) {
       if (i % 2 === 0) continue; //i가 짝수이면 건너뛰게 한다.
       console.log(i); // 1,3,5,7,9
    }
  • 삼항연산자에는 break 나 continue를 사용할 수 없음을 주의해야 한다.
  • 레이블 : 반복문 앞에 콜론과 함께 쓰이는 식별자이다. ‘레이블: 반복문’ 순으로 적으면 break/continue 지시자를 사용할 때 지시를 수행할 반복문(빠져나올 반복문)을 지정해 줄 수 있다. → 단 마음대로 점프할 수 있는 것은 아니고, 반드시 break/continue 위에 있어야 한다.
    ```jsx
    레이블 :
    for (...) {
       for (...) {
          for (...) {
          }
       if (조건) break 레이블; //중간에 break을 썼지만 레이블을 찾아 올라가 반복문 모두를 빠져나오게 된다.
       }
    }
    ```



profile
백 번을 보면 한 가지는 안다 👀

0개의 댓글