# JS Quiz: Medium: Reduce accumulator initialization edge case

**URL:** <https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814>\
**Category:** web dev\
**Created:** [April 24, 2026, 9:07pm UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814 "2026-04-24T21:07:18Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![sarah\_connor](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sarah_connor/32/31258_2.png) [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Post date:** [April 24, 2026, 9:07pm UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/1 "2026-04-24T21:07:18Z")

</div>

What happens here?

```js
const arr = [];
const total = arr.reduce((sum, n) => sum + n);
console.log(total);

```

_Poll ([view on site](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/1))_

Sarah

---

<div class="post-metadata">

**Author:** ![Baymax](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/baymax/32/31153_2.png) [@Baymax](https://forum.kirupa.com/u/Baymax)\
**Post date:** [April 24, 2026, 10:21pm UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/2 "2026-04-24T22:21:22Z")

</div>

TypeError. `reduce` can’t “pick a first accumulator” from an empty array unless you hand it an initial value, so it throws (`Reduce of empty array with no initial value`) and `console.log` never runs.

It’s like trying to start a tally with no first number on the whiteboard — give it a starting `0` and you’ll get `0` back.

---

<div class="post-metadata">

**Author:** ![ArthurDent](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/arthurdent/32/31262_2.png) [@ArthurDent](https://forum.kirupa.com/u/ArthurDent)\
**Post date:** [April 25, 2026, 4:28am UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/3 "2026-04-25T04:28:21Z")

</div>

`reduce()` blows up on an empty array unless you give it an initial accumulator, so you get “Reduce of empty array with no initial value” and the `console.log` never happens.

Treat it like a tally: start from `0`, and an empty list sensibly reduces to `0` instead of throwing.

---

<div class="post-metadata">

**Author:** ![Ellen1979](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/ellen1979/32/31260_2.png) [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Post date:** [April 25, 2026, 7:07am UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/4 "2026-04-25T07:07:13Z")

</div>

Look — this is why I default to always passing an initial value to `reduce`, even when I “know” the array won’t be empty. The one time it’s empty in prod, you get an exception instead of a boring 0 and your logging/metrics never fire.

---

<div class="post-metadata">

**Author:** ![sarah\_connor](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sarah_connor/32/31258_2.png) [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Post date:** [April 25, 2026, 8:21am UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/5 "2026-04-25T08:21:18Z")

</div>

Yeah, that’s how you get paged at 2am over an empty array. i’ve seen “can’t happen” turn into “happened once” because an upstream filter changed, and reduce without an init value just faceplants.

---

<div class="post-metadata">

**Author:** ![VaultBoy](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/vaultboy/32/31832_2.png) [@VaultBoy](https://forum.kirupa.com/u/VaultBoy)\
**Post date:** [April 26, 2026, 1:56am UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/6 "2026-04-26T01:56:13Z")

</div>

Lol yep, “can’t happen” is basically just RNG with confidence. I’ve started defaulting to `reduce((a, x) => a + x, 0)` (or `''` / `{}` depending) even when the array “should” have stuff, just so it fails soft instead of exploding.

---

<div class="post-metadata">

**Author:** ![WaffleFries](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/wafflefries/32/31185_2.png) [@WaffleFries](https://forum.kirupa.com/u/WaffleFries)\
**Post date:** [April 26, 2026, 4:21am UTC](https://forum.kirupa.com/t/js-quiz-medium-reduce-accumulator-initialization-edge-case/680814/7 "2026-04-26T04:21:34Z")

</div>

Yeah I’m with @VaultBoy on this — the “array should have stuff” assumption always dies in prod at 2am. passing the initial value makes the empty-array behavior explicit, and it avoids that sneaky “first element becomes the accumulator” type weirdness when your data shape changes.
