Это просто название переменной.
Хотя в этом кейсе ее обычно называют аккумулятором ( acc, accumulator ), потому что она как бы аккумулирует в себе результаты всех предыдущих итераций.
Работает просто.
reduce принимает два параметра - функцию и начальное значение
.reduce(myFunc, initialValue);
в данном случае initialValue = []
функция должна принимать два параметра, аккумулятор (или по другому, результат с предыдущей итерации). На самой первой итерации он как раз пример значение initialValue. Вторым параметром в нее будет передаваться элемент перебираемого массива. На основе этих данных вы внутри функции можете что делать с массивом.
function myFunc (acc, curr) {
return acc.concat(curr);
}
Здесь каждый член массива объединяется с предыдущими, получая таким обьразом "плоскую" структуру массива.
Итого, по полочкам
let arrays = [[1, 2, 3], [4, 5], [6]];
let initialValue = [];
function myFunc (acc, curr) {
return acc.concat(curr);
}
let result = arrays.reduce(myFunc, initialValue);
console.log(result);
Тут главное понять, что reduce перебирает массив (по сути цикл), на каждом элементе вызывает функцию, функция что-то делает, возвращает результат и этот результат опять используется в этой функции на следующем элементе.