Как работает анонимная функция?
const createFirstFun = function(fun)   {
// эта фигня вернет функцию которую можно будет вызвать()
    return function(sometext){      
      // эта фигня будет вызывать переданный сверху fun() с аргументом sometext
      fun(sometext.toUpperCase())      
  }
}


const scream = createFirstFun(
	// вот этот всё внутри createFirstFun станет параметром fun
	function(text) {return alert(text)}
);

// так как createFirstFun вернет функцию которую можно будет вызвать()
// то мы и вызываем эту возвращенную функцию с параметром sometext = 'Hello'
scream('Hello');
ну как-то так
Замыкания. Возврат функции