And whether it mutates is kind of a surprise. Like reduce doesn't, even though it works similar to forEach, map, and every.
All of these pass the original array as the last argument, reduce()'s callback just takes one more argument, hence the confusion in the original codepen. It would indeed be highly surprising if some of these functions passed a copy of the original array.