Programming/Client

[Javascript] array.reduce() 콜백함수 속 증감연산자

Jiwoo 2022. 5. 3. 17:29

문제상황

let arr = [1, 2, 3]

return arr.reduce((sum, e) => sum++, 0);

 
예상했던 반환값은 arr의 길이인 3인데, 0인 반환됐다.
sum++++sum로 바꿔쓰니 예상대로 값이 나왔다.
증감 연산자가 원인이었다.
 

해결

arr.reduce() 속 누산기는 콜백 함수의 반환값을 누적한다.
함수의 반환값을 sum++로 쓸 경우, 기존 변수값을 반환한 후에 값에 +1을 한다.
하지만 누산기는 반환값을 누적하므로 +1 연산이 되지 않는 것이다.
 
arr.reduce()의 콜백함수에서 증감 연산자를 사용하려면
++sum과 같이 전위 연산자를 사용하거나 sum += 1로 더하기를 곧바로 실행해줘야 한다.