Esattamente! O meglio, per scrivere il codice più correttamente:

codice:
<html>
<head>
funzione js
</head>
<body>
la mia div
richiamo della funzione
</body>
</html>
Le funzioni, proprio perché non sono eseguite finché non richiamate esplicitamente, è più corretto metterle nella head della pagina. Così facendo vengono caricate prima della pagina stessa (che è tutto quello che contiene il body) e perciò sono immediatamente disponibili.

Il browser legge ed esegue il codice sempre da sinistra verso destra e dall'alto verso il basso (come avviene in tutti i linguaggi del resto). Quindi è normale che se richiami una funzione che fa riferimento ad un oggetto che viene "letto" dopo, quell'oggetto ancora non esista.