agowa338
Goto Top

Javascript Funktionen

Hallo, habe gerade mehrere schönen Javascripte per mail bekommen und frage mich gerade, was eigentlich folgendes in einem Javascript bewirkt:
!function(r) {/*code*/} (this);
!function() {/*code*/} ();
var Variable = function() {/*code*/} ();
mir ist nur die Syntax für Funktionen bekannt.
function()  {/*code*/}

Ach ja, handelt sich übrigens um ein Javascript für den Windows Skript Host, falls das was ändert...

Content-Key: 297969

Url: https://administrator.de/contentid/297969

Printed on: April 23, 2024 at 15:04 o'clock

Mitglied: 114757
Solution 114757 Mar 02, 2016, updated at Mar 03, 2016 at 09:44:44 (UTC)
Goto Top
Moin.
Zitat von @agowa338:
!function(r) {/*code*/} (this);
Hier wird der Funktion das aktuelle Objekt this übergeben welches dann im Funktions-Body als Variable r zur Verfügung steht, und das Ergebnis der Funktion wird dann durch das Ausrufezeichen "negiert".

!function() {/*code*/} ();
Das gleiche wie oben nur ohne Parameterübergabe an die Function.
var Variable = function() {/*code*/} ();
Hier wird das Ergebnis der Ausführung der Funktion der Variablen zugewiesen.

Die zusätzlichen Klammern nach der Funktionsdefinition bewirken einfach nur das "direkte ausführen" dieser anonymen Funktionen ohne Namen.
Der Name der Funktion ist quasi die Funktionsdefinition selber also der Teil:
function() {/*code*/}

Ausgeführt wird sie dann durch das folgende Klammernpaar
!function() {/*code*/} ()
(Rückgabewert der Funktion negieren)(Anonyme Funktion) (Ausführen)


Gruß jodel32
Member: agowa338
agowa338 Mar 03, 2016 at 09:44:39 (UTC)
Goto Top
Also das Ausrufezeichen am Zeilenanfang vor einer Funktion hat keine besondere Bedeutung (wenn der Wert nicht weiter verarbeitet wird).
Mitglied: 114757
114757 Mar 03, 2016 updated at 09:51:49 (UTC)
Goto Top
Zitat von @agowa338:

Also das Ausrufezeichen am Zeilenanfang vor einer Funktion hat keine besondere Bedeutung (wenn der Wert nicht weiter verarbeitet wird).
Wie gesagt, das Ausrufezeichen negiert den Rückgabewert der anonymen Funktion( das was die Funktion als Ergebnis via Return zurückgibt)

Z.B. Die Funktion gibt true zurück, dann wird daraus letztendlich false wegen dem Ausrufezeichen.
Member: agowa338
agowa338 Mar 03, 2016 at 09:56:19 (UTC)
Goto Top
Ich meinte eigentlich, dass es keine weitere Auswirkung auf den Programmablauf hat.

Also die Zeilen bewirken das gleiche:
!function() {} ();
function() {} ();

weil hier der Rückgabewert sowieso verloren geht, oder nicht?
Mitglied: 114757
Solution 114757 Mar 03, 2016 updated at 16:23:27 (UTC)
Goto Top
Zitat von @agowa338:
weil hier der Rückgabewert sowieso verloren geht, oder nicht?
Es kommt drauf an was die Funktion zurückgibt...das könnte z.B. auch eine weitere Function sein., das kann ich hier aber leider nicht sehen.

Siehe dazu auch folgenden Artikel
http://stackoverflow.com/questions/7586870/in-javascript-what-is-the-ad ...