В JavaScript функции являются
объектами первого класса
То есть их можно назначать в переменные, использовать как объекты(вызывать методы, добавлять свойства), либо передавать как параметры в функции
В данном примере функция принимает в качестве аргумента другую функцию, и выполняет ее.
Это может использоваться, для того чтобы легко, и гибко изменять поведение функции
Например в
методе .sort() можно сортировать не только простые примитивы(числа, строки), но и что угодно, каким угодно способом, передав для этого метода функцию умеющую сравнивать два элемента(например сравнивать две строки не лексикографически, а по количеству гласных)