본문 바로가기
프로그래밍 언어/Javascript

(for문) n = n+i를 n === n+1처럼 착각하지 말자

by whale in milktea 2022. 12. 19.

unsplash - Erda Estremera // 변수 cute라는 space에 할당된 dachshund

예제) 1부터 100까지를 모두 더한 값을 for문을 활용하여 구하시오.

tmi, 1부터 100까지의 합은 중학교때 처음 접했던 것 같은데,, 그때는 귀찮아서 그냥 답을 외워버렸다..(셤에 나온다길래) 근데 JS만나니 아주 반갑네;;ㅎㅎㅎ

let sum = 0;

for (let i = 0; i <= 100; i++) {
  sum = sum + i;
}

console.log(sum); // 5050

 

*반복문의 구조는

for (초기값; 조건식; 증감식) {
실행코드
}

이렇다.. 그래,, 기본 구조는 무엇이 어려울까.. 이걸 사용해서 뭔갈 만드는게 어려운거지...ㅎㅎ;;;

 

*내가 제일 어려웠던 건 무엇의 합이라고 하면 어떤 범위를 뜻하는 문법이 등장하고 이를 합치는 어떤 식이 있어야 한다고 생각했는데, 이건 내가 =(할당)과 ===(동치연산자, 그나마 수학에서의 =과 비슷한 의미..)을 구분하지 못해서 나타나는 착각이었다.

 

나의 착각

: sum = sum + i 니까, 만약에 i가 0부터 시작한다고 한다면, sum = 0+0

: 그 다음 반복되니까, i가 1, sum = 0+1

읭? 근데,, 이 둘은 어떻게 '합'이라는 개념으로 연결되는거지????

 

올바른 사고

: sum = sum + i 니까,

1) sum = 0(sum의 할당값) + 0(for문의 초기값), 즉! 반복의 첫 단계에서는 sum에는 0이 할당되었다! 이후, 증감식에 따라 i값 1증가!

2) sum = 0(sum의 할당값) + 1(for문의 증감값), 반복의 두번째 단계에서는 sum에 1이 할당되었다! 이후, 동일

3) sum = 1(sum의 할당값) + 2(for문의 증감값), 반복의 세번째 단계에서는 sum에 3이 할당되었다! 이후, 동일

4) sum = 3(sum의 할당값) + 3(for문의 증감값), 반복의 네번째 단계에서는 sum에 6이 할당되었다! 이후, 동일 

 

그니까,, sum = sum + i는 for문의 소괄호에 의해 i값이 1씩 증가하며 더해지는 결과가 나오는 식일 뿐이지,

sum = sum + i 자체가 '어떤 범위의 값들의 합'이라는 의미를 갖진 않는다.

** 개념과 별개로, 많은 경우 위와 같은 용도를 위해 활용되는 것 같긴 같다.

 

 

오늘의 교훈...

"내 상식에 내용을 맞추지 말고, 내용에 따라 나의 상식을 바꾸도록 하자..."

test-1

 

 

'프로그래밍 언어 > Javascript' 카테고리의 다른 글

Arrow Function  (0) 2023.01.19
__proto__ : 프로토타입  (0) 2023.01.16
Class and Instance  (0) 2023.01.16
객체란?  (0) 2023.01.16
자바스크립트의 타입과 변수  (2) 2022.12.16