Поскольку вы не передали начальное значение в качестве аккумулятора, начальным значением здесь является массив [0, 1]
.На каждой итерации операция accumulator + currentValue
выполняется и используется в качестве нового аккумулятора на следующей итерации (или как полное возвращаемое значение .reduce
, если на последней итерации).
Напервая итерация, [0, 1] + [2, 3]
приводит к "0,12,3"
.Это связано с тем, что когда номера не используются с +
, они сначала преобразуются в примитивы, а когда массивы преобразуются в примитивы, каждый элемент объединяется запятой.Итак,
[0, 1] + [2, 3]
// evaluates to
'0,1' + '2,3'
// evaluates to
'0,12,3'
На следующей итерации:
'0,12,3' + [4, 5]
// evaluates to
'0,12,3' + '4,5'
// evaluates to
'0,12,34,5'
Это последняя итерация, поэтому окончательный результат равен '0,12,34,5'
.
Обратите внимание, что есть без пробелов - элементы массива объединяются только запятой, а не запятой и пробелом.