0406) for...문에서, const? let? 아니면 생략?

Clear·2023년 4월 5일
0

Daily Posting

목록 보기
17/27

도입

for문에서 loop 변수를 선언할 때 3가지 방법이 있다.

// 1. const
for (const item of arr) ...
// 2. let
for (let item of arr) ...
// 3. 생략
for (item of arr) ...

질문

어떤 상황에서 어떻게 선언하는 것이 바람직할까? 이유는?

1. const

  • const로 루프 변수를 선언하면 루프 내에서 재할당할 수 없는 블록 범위 변수가 생성된다.
  • 이는 루프 내에서 루프 변수가 실수로 수정되지 않도록 하려는 경우에 유용하다.
  • 그러나 이는 또한 루프 내에서 변수를 새 값으로 재할당할 수 없음을 의미한다.

예시

const arr = [1, 2, 3];

for (const num of arr) {
  console.log(num); // 블록 범위, 반복문 내에서 재할당 불가능.
}

2. let

  • let으로 루프 변수를 선언하면 루프 내에서 재할당할 수 있는 블록 범위 변수가 생성된다.
  • 예를 들어, 배열을 반복하고 값을 업데이트하려는 경우와 같이 루프 내에서 변수를 수정해야 하는 경우에 유용하다.

예시

const arr = [1, 2, 3];

for (let i = 0; i < arr.length; i++) {
  arr[i] = arr[i] * 2;	// i는 블록 범위, 반복문 내에서 재할당되고 있음.
}

console.log(arr); // [2, 4, 6]

3. 생략

  • 변수 선언을 생략하면 전역 변수가 생성된다.
  • 이로 인해, 버그 및 의도하지 않은 부작용이 발생할 수 있으므로 생략하지 않는 것이 좋다.

예시

const arr = [1, 2, 3];

for (i = 0; i < arr.length; i++) {
  console.log(arr[i]); // 똑같이 작동하겠지만, 전역변수로 생성되기 때문에, 반복문 외부에서 접근가능해진다.
}

결론

  1. 일반적으로 루프 내에서 변수를 수정해야 하는지 여부에 따라,
    const 또는 let을 사용하여 루프 변수를 선언하는 것이 좋다.
  2. 생략해도 동일하게 작동하지만, 버그 및 의도하지 않은 부작용이 발생할 수 있으므로 권장되지 않는다.

0개의 댓글