JavaScript-Syntax: Funktionsaufrufe und Klammern verwenden

7

Warum funktioniert das?

%Vor%

aber nicht das ????

%Vor%

Der Unterschied ist die Verwendung von Klammern beim Aufruf der Funktion myAlert .

der Fehler, den ich bekomme ..

  

"htmlfile: Typ stimmt nicht überein." beim Kompilieren über VS2008.

    
madcolor 27.02.2009, 04:16
quelle

5 Antworten

29

Das () nach einer Funktion bedeutet, die Funktion selbst auszuführen und ihren Wert zurückzugeben. Ohne es haben Sie einfach die Funktion, die als Rückruf nützlich sein kann.

%Vor%     
Luca Matteis 27.02.2009, 04:20
quelle
5

Die Funktion addEventListener erwartet eine Funktion oder ein Objekt, das EventListener als zweites Argument implementiert, nicht ein Funktionsaufruf.

Wenn die () einem Funktionsnamen hinzugefügt werden, ist dies eher ein Funktionsaufruf als die Funktion selbst.

Bearbeiten: Wie in den anderen Antworten und in den Kommentaren angegeben, ist es möglich, Funktionen in Javascript zurückzugeben.

Also, für etwas Interessantes könnten wir Folgendes versuchen. Von der ursprünglichen myAlert können wir es ein wenig ändern, um abhängig von den Parametern eine andere Nachricht zurückzugeben:

%Vor%

Beachten Sie, dass die Funktion tatsächlich eine Funktion zurückgibt. Um diese Funktion aufzurufen, wird daher die zusätzliche () benötigt.

Ich habe ein wenig HTML und Javascript geschrieben, um die obige Funktion zu benutzen. (Bitte entschuldigen Sie mein unsauberes HTML und Javascript, da es nicht meine Domäne ist):

%Vor%

Es werden zwei Schaltflächen angezeigt, von denen jede die Funktion myAlert mit einem anderen Parameter aufruft. Sobald die Funktion myAlert aufgerufen wird, gibt sie selbst ein weiteres function zurück, das mit einem zusätzlichen Klammersatz aufgerufen werden muss.

Das Endergebnis ist, wenn Sie auf Button1 klicken, wird ein Meldungsfeld mit der Nachricht Message: Clicked Button1 angezeigt, während das Klicken auf Button2 ein Meldungsfeld mit dem Namen Message: Clicked Button2 anzeigt.

    
coobird 27.02.2009 04:20
quelle
2

Wenn Sie die Klammer verwenden, rufen Sie tatsächlich die Funktion auf, und Sie senden das Funktionsergebnis (in diesem Fall undefiniert, da myAlert keinen Rückgabewert hat) als Parameter.

    
CMS 27.02.2009 04:22
quelle
0

Bemerkenswert ist auch, dass Funktionen erstklassige Objekte sind. Sie können sie wie jedes andere Objekt herumwerfen. Hier ist ein schönes, übersichtliches Beispiel dafür, warum das cool ist: Wikipedia :

%Vor%     
Tyson 27.02.2009 04:24
quelle
0
%Vor%

mit myAlert() gibt hier den zurückgegebenen Wert der Funktion, nicht die Funktion selbst.

Bedenken Sie Folgendes:

%Vor%

Der Alarm wird den von der Funktion bob zurückgegebenen Wert verwenden.

Wenn Sie zusätzliche Parameter in addEventListener übergeben möchten, versuchen Sie Folgendes:

%Vor%

javascript verwendet erstklassige Funktionen und kann daher als Parameter an Funktionen übergeben werden, was die addEventListener- und attachEvent-Methoden erwarten. Hoffe das hilft.

    
Jonathan Fingland 27.02.2009 05:21
quelle

Tags und Links