본문 바로가기
TIL

2024.02.23 4일차 JavaScript 반복문, 함

by Song.dev 2024. 2. 23.

반복문

for문, while문, do ... while문

// 문자열 for문 (<=str.length)
let str = 'codesandbox';
let newStr = '';
for (let i = 0; i <= str.length; i++) {
    newStr += str[i];
}
console.log(newStr);

str[str.length] 는 존재하지 않는 인덱스를 넣었기 때문에 undefined가 출력됨

cf. JAVA에서는 ArrayIndexOutOfBoundsException 발생

 

반복문의 중첩

//정육면체 주사위 두 개를 굴려서 나올 수 있는 모든 경우의 수

for (let i = 1; i <= 6; i++) {
    for(let j = 1; j <= 6; j++) {
        console.log(`첫번째 주사위는 ${i}, 두번째 주사위는 ${j}입니다.`);
    }
}

 

** i=1일 때 j = 1 ~ 6까지 반복

   → j = 7일 때 조건식에서 멈추고 다시 for i 증감식으로 이동

   → i++ 이동 (이때는 아직 j = 7. 가비지 컬렉터가 아직 버리지 않았을 뿐)

   → i=2 → 새롭게 초기화 후 j=1

   → j 조건식으로 가서 6까지 반복 다시 시작

   → 반복…

 

** break point

VSCode Run and Debug 메뉴를 보면 플로팅 메뉴 (사진 상 왼쪽 상단)을 이용해 

코드의 작동순서와 그 때 변수의 값을 파악할 수 있음 

VSCode에서 break point를 이용해서 작동 순서 파악

 

while문

  1. 무한루프 주의 (ctrl + c : 터미널 명령 강제종료)
  2. 증감식의 위치에 따라 결과가 달라질 수 있음
    ex) console.log() 위치에서 num을 인자로 연산하는 주요로직이 있다면?

do…while문

do…while문은 while 뒤에 오는 조건식이 true로 평가되는 동안

do 뒤에 오는 코드블록 내부의 코드를 반복하여 실행

단, 이 경우 do의 코드블록 내부의 코드가 최소 한 번은 실행됩니다.

 

break;

가장 가까운 반복문을 벗어남

ex. 이중 for문에서 안쪽 for문에서 break; 사용했다면 안쪽 for문만 벗어남

 


+ 궁금한 점 개인학습

향상된 for문 vs for in, for of

JAVA 향상된 for문은 배열의 요소를 바로 입력할 수 있음 +

JavaScript의 for in은 인덱스를 넣어줘야 함

JavaScript의 for of는 JAVA 향상된 for문과 유사하게 배열의 요소 입력

// for in 
let str2 = '';
for(let i in str) {
    str2 += str[i];
}
console.log(`for in : ${str2}`);

// for of
str2 = '';
for(let i of str) {
    str2 += i;
}
console.log(`for of : ${str2}`);

 

for in, for of 잘 정리된 곳 참고 (foreach 메서드는 참고만)

https://jsdev.kr/t/for-in-vs-for-of/2938

 

위에서 reduce()를 처음 알게 됐는데 주말에 찬찬히 읽어볼 계획임

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce