Как методы вроде foreEach передают аргумент в callback функцию?
arr.foreach(element => { ... });
Как подобные методы, в которые аргументом приходит функция, читают аргумент из пришедшей функции, который изначально ничему не равен, нигде не объявлен, который можно назвать как угодно и подставляет в аргумент своё значение? И как можно написать свою подобную функцию?
Метод forEach не "читает аргумент из функции", а вызывает функцию foo, которую вы передали, и передает в нее аргументы в том порядке, как описано в документации forEach
При этом, методу совершенно не важно, какие имена вы дали параметрам в функции foo. Можно им вообще имен не давать.