for문에 변수 선언이 필수인 이유

JohnnySeo·2023년 1월 4일
0

개발하면서 for문은 매우 자주 사용된다.
개발하면서 어느새부턴가 for문에서 i에 변수선언을 안하고 사용하기 시작했다.
그러다가 내가 큰 실수를 했다는걸 깨달았다.

기본의 for 문은 아래와 같은 구조다.

for(let i=0; i<5; i++){
	console.log(i)
}

그런데 필자는 아래와 같이 사용한 것.

for(i=0; i<5; i++){ // let 선언 없이 i로 시작...
	console.log(i)
}

운이 좋게도(?) 지금까지 문제가 생기지 않았다.
=> 사실 운이 나쁘다고 보는게 맞다. 이게 왜 문제가 안됬지...

아무튼 이런 경우에 어떤 문제가 생기느냐?
예를들어 함수 안에 for 문이 있고,
for문 안에서 해당 함수를 호출했다고 생각해 보자.

const someFunc = (value) => {
	for(i=0; i<5; i++){
		value+=i
	}
	return value
}

for(i=0; i<2; i++){
	someFunc(5)
}

예상되는 결과는

15
15

겠지만,

현실은

15

가 출력된다.

이유는 최초에 선언된 i라는 변수를 공유하기 때문에
첫 for문에서 코드 수행 후 i++이 수행되어 i=1이 되어도 다음 반복에서 호출된 someFunc함수의 i=0 에서 0으로 변경되기 때문이다.

이런 실수를 했다는거에 현타도 오지만,
기본적인것을 잘 지켜야하는 이유를 오늘 또 하나 배운다.

profile
안녕하세요.

0개의 댓글