Originariamente inviato da LuckySevenRoX
il problema è esattamente l'opposto:
codice:
<html>
  <script>
    window.onload = function() {
          function g() {
               alert("g()");
          }
    }
    g(); //Non viene riconosciuta
  </script>
  <body>
	
  </body>
</html>
Le function fanno scope quindi g fa parte dello scope locale della funzione anonima, di conseguenza è giusto che non sia possibile utilizzarla fuori da lì.

Non ho idea di come sarà il flusso del tuo programma (da questo dipende la soluzione). Potresti banalmente fare così:

codice:
<html>
  <script>
    var pencil = null;
	
    function initAll() {
      // lib init code here
      pencil = {
        draw : function() {
	  console.log("drawing...");
	}
      };
    }
	
    window.onload = initAll;
    
    function draw() {
      pencil.draw();
    }
  </script>
</html>
Niente funzione anonima ma usi una funzione sullo scope globale. Qualcosa del genere potrebbe andare nel tuo caso?