Ordem das funções em JavaScript
Minha pergunta é baseada no exemplo de um livro "JavaScript orientado a objeto"(página 81 - Escopo lexical)
Então, eu entendo deste exemplo ...
function f1(){var a = 1; f2();}
function f2(){return a;}
f1();
... que:
a não está definido
Mas como f1 sabe sobre f2, que é definido após f1?
Esse comportamento levanta uma questão:
Como o interpretador JavaScript funciona?
Presumo que:
varre o código e simplesmente armazena as funções, não atribuídas a nenhuma var, em um ambiente globalInvoca uma função de maneira ad-hoc: quando não existe tal função em um ambiente global, então reclama.