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.