문제상황
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
로 더하기를 곧바로 실행해줘야 한다.
'Programming > Client' 카테고리의 다른 글
[React] 전역에서 사용 가능한 모달 만들기 (0) | 2023.01.08 |
---|---|
[Javascript] 모듈로 설정된 파일의 변수는 전역 변수가 아니다! (0) | 2023.01.06 |
[Javascript] Array.fill()로 2차원 배열을 만들면 안되는 이유 (0) | 2022.05.02 |
[Javascript] 객체 매핑하기 (0) | 2022.03.25 |
[Javascript] 확장 가능한 계산기 만들기 (생성자 함수) (0) | 2022.03.23 |