반복문
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 메뉴를 보면 플로팅 메뉴 (사진 상 왼쪽 상단)을 이용해
코드의 작동순서와 그 때 변수의 값을 파악할 수 있음
while문
- 무한루프 주의 (ctrl + c : 터미널 명령 강제종료)
- 증감식의 위치에 따라 결과가 달라질 수 있음
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