acc = 5
будет использовать 5
в качестве значения по умолчанию, если в противном случае значение будет undefined
.
С Array#reduce
, если вы не предоставите начальный аргументв виде arr.reduce(callback, initial)
, затем используется первый элемент массива, и итерация начинается со второго элемента массива:
let arr = [1, 2, 3];
arr.reduce( (acc = 5, el) => {
console.log(acc, el);
return acc + el;
}) // -> 6
Таким образом, единственный способ получить acc
be undefined
- это если вы явно установите его таковым через начальный параметр, или еслипервый элемент undefined
:
let arr = [1, 2, 3];
let initialiseWithUndefined = [1, 2, 3].reduce( (acc = 5, el) => acc + el, undefined) // -> 11
console.log(initialiseWithUndefined);
let firstItemIsUndefined = [undefined, 2, 3].reduce( (acc = 5, el) => acc + el) // -> 10
console.log(firstItemIsUndefined);