Видимо я не могу просто понять область видимости ну или же не правильно понял как работают параметры.
Допустим, в вашем примере:
let showPosition, pos1, pos2
function showPosition(order, ps1, ps2){
if(order){
ps1();
} else {
ps2();
}
}
function pos1(){
console.log('Позиция 1', ps2);
ps2();
};
function pos2(){
console.log('Позиция 2', ps1);
ps1();
};
showPosition(true, pos1, pos2);
:
Вы говорите когда функции pos1 и pos2 были объявлены, переменные ps1 и ps2 не были объявлены.
Но разве это работает не так, что функции записанные как параметр, в функции в которую они записаны присваиваются в переменные, а потом запускаются в зависимости от условия. (я имею ввиду когда запускается ps1 на этот момент в основной функции уже существуют переменные ps1 и ps2 так как они записались при вызове функции showPosition)