De hecho se puede poner un poco más complicado dependiendo de lo que estés haciendo. Lo que dice goteen_mx es correcto. Javascript bloquea todo mientras entra en una función y no hace otra cosa hasta que dicha función termina de ejecutarse y regresa, pero eso no necesariamente quiere decir que todas las instrucciones dentro de dicha función han terminado de ejecutarse. Considera por ejemplo el caso en que function1 inicie un time out. En ese caso, a pesar de que la función ha terminado su ejecución, aún faltan instrucciones por ser ejecutadas. Después de determinado tiempo el interprete se va a "despertar" y ejecutará las instrucciones restantes. Esto es importante ya que puede causar errores. Lo mismo sucede con ajax. Si tu función2 depende de lo que hace la primera, considera bien todos los escenarios.
El siguiente hilo es un ejemplo de lo que te digo:
http://www.forosdelweb.com/f13/probl...ntbyid-878835/