늘 프레임워크에 대한 공부만 하다가 순간에 기초적인 지식부분에 대해서도 놓치게 될까봐 이번 한주에는 expressJS나 NestJS 와 같은 프레임워크들에 대한 부분보다는 JavaScript에 대한 공부를 해보는데에 할애 해보았다.
근데 기초적일 수 있는 부분에서도 역시 내가 간과하고 놓치는 부분들이 있어 이를 기억하고 기록하기 위해 다시 한 번 이 내용을 적어놓고자 한다.
JavaScript의 특성에 대한 부분보다는
코드를 보았을때 간과할 수 있는 부분에 대해서 수학적 표기법
을 참고하기 위함이다.
let num = 1;
let newNum = num++;
console.log(num);
console.log(newNum);
위 코드블록에 대해서
1. console.log(num)
2. console.log(newNum)에 대해서 유추해보자
.
.
.
.
.
.
.
.
.
.
나는 순간 간단하게만 생각했을때 위의 답변에 대해서 보면
1. 1
2. 2
라고 생각했다.
하지만 위의 코드를 뜯어서 본다면 그렇지 않다.
위의 코드는 수학적 논리가 코드에 녹여져 있다.
JavaScript는 코드의 읽는 순서는
1. 위에서 아래로
2. 왼쪽에서 오른쪽으로
과 같다.
그럼 수학적 논리로 표기된 내용을 보면
위 이미지와 같다.
논리는 이미지와 같고 이걸 코드로 풀어낸다면
let num = 1;
let newNum = num;
num++;
이 코드블럭을 보면 newNum=num 이 먼저 읽히기 때문에 결국 newNum=1
이 되는것이고 다음 num++이 읽히면서 num=2
가 되는것이다.
.
.
.
이 상황에서 newNum이 2가 되기 위해서는
let num=1;
let newNum= ++num;
console.log(newNum)
이렇게 되어야 한다.
이 코드를 다시 풀어서 쓴다면
let num = 1;
num++;
let newNum = num;
의 내용과 같다.
이런 논리들이 프로그래밍에 있어서 빈도가 많지는 않을 수 있으나 컴퓨터적 사고에 대해서 조금 더 이해하고 다가갈 수 있는 기회라고 생각하고 기록해본다.수학적인 논리에 접근이 필요할때 놓치지 않는 자세를 가져야겠다.
n++, ++n 매번 헷갈렸는데 수학적 논리를 이해하면 외울필요가 없었던거네요.. 좋은글 감사합니다!