갑자기 a++와 ++a가 미친듯이 헷갈리면서 뇌정지가 왔다.
for문을 작성하며 i++는 익숙하지만 ++a가 나오니 순간적으로 당황스러웠다.
자바스크립트 책에는 다음과 같이 나와있었다.
a++
a에 1을 더한 다음에 a의 값을 평가한다.
++a
a를 평가한 다음에 a에 1을 더한다.
읭?
분명 한글이고 한국말인데 이해가 잘 안갔다. 일본인이 쓴 책을 한글로 번역해 놓은 거라 더 헷갈리는 건가 싶어서 인터넷을 찾아보니 전위증가, 후위증가 뭐 이런 말들로 나와있는데 결론은 다음과 같다.
a++ : 먼저 해당 연산을 수행하고 나서, a의 값을 1 증가시킴
++a : a의 값이 1 증가된 후 증가된 값을 리턴함
사실 이래도 무슨 말인지 모르겠다.
다 됐고, 코드로 보자.
let a = 1
let b = a++
console.log(a) // 2
console.log(b) // 1
해당 연산을 수행하고 나서 1을 증가시킨다고 했으니까,
b에 a(=1)를 먼저 넣고 a를 증가시켜주는 것이니,
b는 아직 1이고, a는 혼자 증가해서 2가 되었다.
let a = 1
let b = ++a
console.log(a) // 2
console.log(b) // 2
그럼 이건 어떨까.
a가 ++되고 난 이후의 a를 리턴한다고 했으니까,
a를 우선 증가시킨다(a=2). 그 상태로 b에 할당하니 b도 2가 된다.
사실 나중에 보면 또 까먹을 것 같아서 기록해두는 문법이다....