forEach()
вызывает функцию по очереди с каждым из элементов массива. В данном примере вызовется function(1), function(3), function(4), ... function(5)
result
это объект, где свойствами будут встреченные цифры (как строки).
Пока цифра не встречалась, такого свойства у result
нет, и, например, result[1]
будет поначалу undefined
. И в таком случае создаётся это свойство со значением 1
.
А если такое свойство (со значением-счётчиком = 1 или уже больше) найдено, это значение не равно undefined
, и оно будет увеличено на 1.
Так и сосчитается, сколько раз встречается каждое из значений.