function test() {
const a = [1];
return a[0] += 3; // что вы вернет?
}
По вашей логике массив
a
?
На самом деле вернется результат операции сложения, то есть 4.
А если добавить оператор запятую, то вернет то, что после запятой, что и требуется для reduce.
Распишем подробно что происходит внутри reduce c запятой и без.
// с запятой
array.reduce((a,b,i)=>function(){
const sum = a[i%2] + b; // вычисление
a[i%2] = sum; // присваивание
return a; // возврат массива
}, [0,0]);
// без запятой
array.reduce((a,b,i)=>function(){
const sum = a[i%2] + b; // вычисление
a[i%2] = sum; // присваивание
return sum; // возврат результат суммирования
// и на следующей итерации будет ошибка из-за попытки обратиться к числу как к массиву.
}, [0,0]);