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
로 더하기를 곧바로 실행해줘야 한다.