내가 찾아가는 JavaScript_반복문

Daniel Woo·2022년 10월 3일
0
post-thumbnail

반복문

반복이란 같은 것을 되풀이하는 것을 말한다. 인간은 그들이 할 수 있는 반복의 한계를 경험하였고, 그 이상을 원했기 때문에 컴퓨터 및 컴퓨터 공학이 탄생하였을 것이다.

컴퓨터를 사용하는 목적 중 하나는 한계를 넘어서는 반복이기에 JavaScript뿐 아니라 그 어떤 프로그래밍 언어도 반복적인 계산을 할 수 있는 반복문이 존재하며 이를 통해 대량의 반복적인 연산을 쉽게 구현할 수 있다.

JavaScript의 반복문으로는 for문, while문, do...while문, break문, continue문, for...of문등 이 있다. 이렇게 반복문을 말한 때는 for loop와 같이 순환 고리를 뜯하는 loop를 사용한다.

for 문

for(let i = 0; i < 2; i++){
	console.log(i)
}
// 0
// 1

위와 같은 코드 형태인 for문은 가장 대표적인 반복문이라고 할 수 있다.

  • 반복하는 변수 i(iteration)의 설정 및 값 부여를 하고 let i = 0;
  • 실행 범위를 설정 i < 2
  • 변수의 변화 i++를 명시하는 것이 일반적이다.
    위의 코드의 실행 과정을 자세히 보면 다음과 같다.
0. for문 진입 및 실행
1. i 변수에 0이 할당된다. i = 0;
2. i 는 값이 0이므로 조건 i < 2 는 true
3. 블록 내부 코드가 실행되어 i의 값 0 표출
4. i++에 의해 i의 값 재할당 i = 1;
5. i의 값이 1이므로 i < 2는 true
6. 블록 내부 코드가 실행되어 i의 값 1 표출
7. i++에 의해 i의 값 재할당 i = 2;
8. i의 값은 2이므로 i < 2는 false
9. for문 실행 종료	

while 문

for문은 반복 횟수를 예측할 수 있을 때 사용하는 반복문이라면, while문은 반복 횟수가 불분명할 때 사용하는 것이 일반적이다.

다음과 같은 형태를 가지고 있으며,

  • 반복을 진행할 조건과 count > 0
  • 반복 실행할 코드 블럭으로 구성되어 있다. {} 내부

조건이 true일 때 반복하여 코드 블럭이 실행되고 false일 경우 실행되지 않는다. 보통 처음에는 true이다가 false로 향하게 하는 형태로 사용된다.

while 문 내부에서 조건문 if를 사용하여 특정 조건을 만족하는 코드 블럭을 반복하거나 break문으로 어떤 경우에 반복문을 조기에 실행 종료시킬지 설정하여 더 복잡한 구성을 만들 수도 있다.

const timer = (time) => {
	let count = time;
	while(count > 0){
 		console.log(count);
    	count--;
	}
}

console.log(timer(10))

do...while 문

do...while문은 실제 코드에 적용할 수 있었던 기회가 없어 꽤나 생소했던 반복문이다. 하지만 while문과 차이점을 잘 파악하면 이해는 것이 그리 어렵지 않을 것이다.

아래와 코드와 같이 while문은 코드 블럭 실행 전에 조건을 먼저 판단한다면, do...while문은 do에 해당하는 코드블럭을 먼저 실행한 뒤, 조건을 판단하여 다시 do 블럭을 반복할지 결정한다.

let count = 3;
do {
  log(count, 'do while');
  count++;
} while (count < 3);

while (count < 3) {
  log(count, 'while');
  count++;
}

// 3 'do...while'

따라서 do는 count가 조건에 부합하지 않음에도 불구하고 (count = 3, count < 3 === false) 콘솔에 값이 찍힌다. 반면, while은 조건을 먼저 체크하여 반복문이 실행되지 않으므로 콘솔에 값이 찍히지 않는다.

조건을 충족시키지 않더라도 무조건 어떠한 코드를 실행해야할 필요가 있을 때 사용할 것 같지만, 그런 경우가 현재로서는 구체적으로 떠오르지 않는다.

Iteration protocol

ES6에서는 iterable과 iterator을 사용하는 iterable protocol이 추가되었다. MDN문서에서는 이것이 JavaScript의 내장 기능이나 문법으로 추가된 것이 아닌, 규약으로서 추가된 것을 강조한다. MDN 문서 - iteration protocol

iteration protocol은 개발자가 반복문을 커스터마이즈 할 수 있다는 점에서 폭 넓은 사용성을 제공한다. 중요하고 꽤나 복잡한 내용이기에 이후 새로운 글에서 다뤄보려고 한다.


*loop, reputation, iteration이 번역으로는 비슷한 뜻이라 어떤 부분에서 다르게 사용하는지 궁금하여 찾아보았다.

loop나 reputation역시 같은 의미를 갖지만 컴퓨터 공학자들은 더 특별한 의미를 담아iteration반복을 의미하는 어휘로 사용한다.

1. iterate until a certain condition is reached
2. iterate a certain number of times
3. iterate through elements in a list or array

위키백과 Iteration

profile
모두가행복한세상을만들고싶은사람

0개의 댓글