Apenas um adendo:

Javascript é essencialmente uma linguagem imperativa, isso significa que os comandos (statements) serão avaliados na ordem que foram escritos.

Para declaração de funções a coisa muda de figura pois a linguagem possui hoisting. Na prática, isso faz com que uma chamada a uma função possa ocorrer antes da declaração.

Por exemplo, o trecho de código a seguir funciona.

hello();

function hello() {
  console.log("Hello!");
}

Veja mais em https://developer.mozilla.org/en-US/docs/Glossary/Hoisting.