여전히 이것저것 해보다가 삽질을 하고 온 곰인간 입니다.
이게 할 줄은 아는데 이해도가 없는게
마치, 롤에서 다양한 챔피언을 쓰지만 챔피언 숙련도가 없는 느낌을 받았습니다.
그래서 문법 공부에 좀 더 힘을..
참고자료 : MDN Web Docs - for(javascript)
for 반복문
어떤 특정한 조건이 거짓으로 판별될 때까지 반복합니다.
for ([initialization]; [condition]; [final-expression])
statement
initialization(초기문)
식(할당식 포함) 또는 변수 선언. 주로 카운터 변수를 초기화할 때 사용합니다. var 또는 let 키워드를 사용해 새로운 변수를 선언할 수도 있습니다. var 키워드로 선언한 변수는 반복문에 제한되지 않습니다. 즉 for 문과 같은 범위에 위치합니다. let 키워드로 선언한 변수는 반복문의 지역 변수가 됩니다.
식의 결과는 버려집니다.
condition(조건문)
매 반복마다 평가할 식. 평가 결과가 참이라면 statement를 실행합니다. 이 식을 넣지 않았을 때 계산 결과는 언제나 참이 됩니다. 계산 결과가 거짓이라면 for 문의 바로 다음 식으로 건너 뜁니다.
final-expression(증감문)
매 반복 후 평가할 식. 다음번 condition 평가 이전에 발생합니다. 주로 카운터 변수를 증감하거나 바꿀 때 사용합니다.
statement(문장)
조건의 평가 결과가 참일 때 실행하는 문. 여러 문을 반복 실행하려면 블럭문({ ... })으로 묶어야 합니다. 아무것도 실행하지 않으려면 공백문 (;)을 사용하세요.
for문이 실행될 때, 다음과 같이 실행됩니다.:
- 초기화 구문인 초기문이 존재한다면 초기문이 실행됩니다. 이 표현은 보통 1이나 반복문 카운터로 초기 설정이 됩니다. 그러나 복잡한 구문으로 표현 될 때도 있습니다. 또한 변수로 선언 되기도 합니다.
- 조건문은 조건을 검사합니다. 만약 조건문이 참이라면, 그 반복문은 실행됩니다. 만약 조건문이 거짓이라면, 그 for문은 종결됩니다. 만약 그 조건문이 생략된다면, 그 조건문은 참으로 추정됩니다.
- 문장이 실행됩니다. 많은 문장을 실행할 경우엔, { } 를 써서 문장들을 묶어 줍니다.
- 갱신 구문인 증감문이 존재한다면 실행되고 2번째 단계로 돌아갑니다.
for(let step = 0; step < 6; step++) {
console.log(`for: ${step}`)
}; // let을 for문안에 지역변수로 선언, for문 안에서만 동작
let setp;
for(step = 0; step < 6; step++) {
console.log(`for: ${step}`)
}; // let을 for문 밖에 전역변수로 선언, for문 밖에서도 동작
let step = 0
for(; step < 6; step++) {
console.log(`for: ${step}`)
};
//초기문을 생략한 경우
//변수를 초기화 하려고 초기문 블럭을 이용할 필요가 없다.
let step = "";
for(i = 0; i < 6; i++) {
step = i;
console.log(`for: ${step}`)
};
//step변수를 빈 문자열로 선언하고, step에 i값을 할당
for(let step = 0;; step++) {
console.log(`for: ${step}`)
if (step > 5) break;
};
//조건문을 생략한 경우
//for문 본문에 if문을 사용하여, step의 값이 5보다 클 경우 루프가 종료 되로록 break를 사용
//if문을 사용해서 조건을 지정하지 않을 경우 무한 반복된다.
let step = 0;
for(;;) {
if(step > 5) break;
console.log(`for: ${step}`);
step++;
};
// for문의 초기문, 조건문, 증감문을 다 생략해서 표현한 경우
// step변수를 0으로 초기화 하고, if문을 사용해서 step이 5의 값보다 커질 경우 루프가 종료(break)
// step의 값은 1, 조건이 만족 할 때까지 1씩 증가
위의 식은 모두
for: 1
for: 2
for: 3
for: 4
for: 5
의 값을 출력합니다.
그리고 for문 내부에 for문을 사용하는 방법도 있습니다.
for (let step1 = 0; step1 < 6; step1++) {
for (let step2 = 0; step2 < 3; step2++) {
console.log(`step1: ${step1}, step2: ${step2}`);
}
};
//step1이 0일 때, step2는 0~2까지 반복하고,
//step1이 1일 때, step2는 0~2까지 반복하는 구조
//step1의 값이 5가 될 때 까지 반복한다.
/* step1: 0, step2: 0
step1: 0, step2: 1
step1: 0, step2: 2
step1: 1, step2: 0
step1: 1, step2: 1
step1: 1, step2: 2
step1: 2, step2: 0
step1: 2, step2: 1
step1: 2, step2: 2
step1: 3, step2: 0
step1: 3, step2: 1
step1: 3, step2: 2
step1: 4, step2: 0
step1: 4, step2: 1
step1: 4, step2: 2
step1: 5, step2: 0
step1: 5, step2: 1
step1: 5, step2: 2 */
위에 처럼 사용하는 방법도 있지만
일반적으로 추천하지는 않는다.
위에 결과값 처럼 불필요한 반복이 많이 발생하여 코드 실행 속도가 느려지기 때문이다.
오늘은 for문에 대해 기본적인거만 알아봤습니다.
다음엔 while에 대해서 공부를 해야겠습니다.
알 수록 어려운 세계에 발을 들여놓은거 같습니다만
원래 챗바퀴 구르는 일상을 싫어하는 사람이라..
재밌습니다.
또, 이런저런 이상한 짓?을 하다가 돌아오겠습니다.
댓글