Anfänger: Javascript muss auf Kopf laufen? Ist die Erklärung Reihenfolge der Funktionen eine Rolle?

stimmen
0

Ich habe diese Funktion in meinem Kopf:

<head>
      window.onload = function(){
         var x = new Array(0,2,3,4,5,6,7,8);
         var y = new Array(20,10,40,30,60,50,70,10);  
         drawGraph(y,x);
      }
</head>

Kann ich die Funktion DrawGraph () irgendwo im Körper erklären? Muss ich es erklären, bevor sie aufgerufen wird?

Veröffentlicht am 09/12/2008 um 19:45
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
5

Die Reihenfolge ist von Bedeutung. Sie müssen die DrawGraph () Funktion deklariert haben, bevor sie aufgerufen wird.

Beantwortet am 09/12/2008 um 19:50
quelle vom benutzer

stimmen
0

Beachten Sie, dass viele Web-Plattformen bereits die window.onload-Methode verwenden, und aufgrund der Tatsache, dass window.onload nur einmal aufgerufen werden kann, können Sie ein Skript Kollision haben. Sie könnten mit einer anderen Methode zum Laden Skript betrachten, die die window.onload baut oder wartet auf die Seite zu laden, zu vervollständigen.

Ein Beispiel ohne ein JavaScript-Frameworks wie JQuery verwenden würde wie folgt aussehen:

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = func;
    } 
    else {
      window.onload = function() {
        oldonload();

        var x = new Array(0,2,3,4,5,6,7,8);
        var y = new Array(20,10,40,30,60,50,70,10);  
        drawGraph(y,x);
      }
    }
}

Ein Beispiel JQuery mit aussehen würde:

  $(document).ready(function() {
    var x = new Array(0,2,3,4,5,6,7,8);
    var y = new Array(20,10,40,30,60,50,70,10);  
    drawGraph(y,x);         
  })
Beantwortet am 03/03/2009 um 22:27
quelle vom benutzer

stimmen
0

Sie sollen die haben können , drawGraphFunktion irgendwo im Dokument , weil es nicht , bis das Dokument aufgerufen wird , wird vollständig geladen. Das bedeutet , dass alle <script>Tags bereits analysiert worden sind , sollten und ausgeführt.

Während Reihenfolge keine Rolle spielt, wie Sie Funktionen auch Angelegenheiten. Wenn Sie die Deklarationssyntax verwenden, ...

function identifier ( arglist ) { body }

... dann wird es vorhanden sein, bevor das Skript sogar unabhängig davon , ausgeführt wird , wo im Skript Sie es erklärt (ich bin nicht sicher , ob dies für alle Dolmetscher Standard ist, aber es scheint , in Firefox, Chrome und Internet Explorer anwenden) . Doch das gilt nur für einen einzigen <script>Tag. Erklärungen in anderen Script - Tags werden nicht existieren , bis diese Skripten analysiert werden, was nach dem vorhergehenden Skripte ausgeführt haben.

<html>
    <head>
        <script type="text/javascript">
            function check_existance()
            {
                if(!check_existance.i)
                    check_existance.i = 0;

                document.write("<h5>Call : " + ++check_existance.i + "</h5>" +
                      "func1 : " + typeof func1 + "<br />" +
                      "func2 : " + typeof func2 + "<br />" +
                      "func3 : " + typeof func3 + "<br />" +
                      "func4 : " + typeof func4 + "<br />");
            }
        </script>
        <script type="text/javascript">
            check_existance();

            func1 = function()
                    {
                        alert("func1");
                    };

            check_existance();

            function func2()
            {
                alert("func2");
            }
        </script>
    </head>
    <body>
        <script type="text/javascript">
            check_existance();

            func3 = function()
                    {
                        alert("func3");
                    };

            check_existance();

            function func4()
            {
                alert("func4");
            }
        </script>
    </body>
</html>

Ausgabe:

Aufruf: 1
func1: undefined
func2: function
func3: undefined
func4: undefined

Aufruf: 2
func1: function
func2: function
func3: undefined
func4: undefined

Aufruf: 3
func1: function
func2: function
func3: undefined
func4: function

Aufruf: 4
func1: function
func2: function
func3: function
func4: function

Ich glaube , YSlow empfiehlt <script>Tags am unteren Rand des Dokuments platziert werden (ich die Schließung erraten vorhergehenden </body>Tag) wegen der Art , wie sie in Browsern geladen werden.

Beantwortet am 29/09/2009 um 19:58
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more