Ich verstehe eine Funktion und wie sie funktioniert. Ich bin mir jedoch nicht sicher:

 function(msg) { alert(msg); }

Wenn dies nichts zugeordnet ist, wie heißt es?

Ich bin damit besser vertraut:

function alert(msg) { // set it
   alert(msg);
}

alert('hello!'); //call it
0
user1469270 27 Nov. 2013 im 02:51

5 Antworten

Beste Antwort

Es gibt vier gängige Möglichkeiten, eine anonyme Funktion aufzurufen:

Speichern Sie es in einer Variablen wie folgt:

var fn = function(msg) {
   // do something
}

Führen Sie dies aus, indem Sie wie folgt in Klammern setzen:

 (function(msg) {
    console.log( msg ); // -> 'This is my message'
 })('This is my message');

Ausführen, indem ein "!"

 !function(msg) {
    console.log( msg ); // -> 'This is my message'
 }('This is my message');

Indem Sie es als Rückruf übergeben

someFn( param1, param1, function( msg ) {
   console.log( msg );
});
1
kkemple 26 Nov. 2013 im 23:12

An sich ist es nicht. Sie müssen eine Art Verweis darauf haben.

function(msg) { alert(msg); }();
// alert will appear

var f = function(msg) { alert(msg); };
f();
// alert will appear

$.ajax({
         url: '/some/ajax/url',
         method:' get'
       })
.done(function(msg) { alert(msg); });
// alert will appear displaying the response data.

Die Idee, dass es die done -Funktion gibt, nimmt einen Parameter und führt diesen Parameter wie folgt aus:

function done(callback) {
    ...
    callback(responseData);
}

Meine Verwendung der jquery ajax api ist möglicherweise nicht korrekt. Ich habe das schnell gemacht, um den Punkt zu veranschaulichen.

Dieses Muster wird übrigens als Funktionsausdruck bezeichnet, wenn Sie eine Inline-Funktion an etwas übergeben oder einer Variablen zuweisen.

0
Brandon 26 Nov. 2013 im 22:56

Sie können es nicht nur einer Variablen zuweisen, sondern auch sofort aufrufen, wie Joews hervorhebt so was:

(function(msg) { alert(msg); })('hello!');

Oder Sie möchten es als Parameter an eine andere Funktion übergeben, wie folgt:

['hello!'].forEach(function(msg) { alert(msg); });
0
Community 23 Mai 2017 im 11:49

Sie können Variablen, die mit dieser Syntax definiert wurden, Variablen wie anderen Objekten zuweisen:

var myAlert = function(msg) { alert(msg); };
myAlert("hello!");

Der häufigste Anwendungsfall für anonyme Funktionen ist eine Funktion höherer Ordnung - wenn Sie eine Funktion als Argument für eine andere Funktion bereitstellen. Ein häufiges Beispiel ist eine AJAX-Anforderung. Sie stellen eine Rückruffunktion bereit, die ausgeführt wird, wenn die Anforderung abgeschlossen ist. Mit jQuery können Sie schreiben:

$.get('/someurl', myAlert);

JQuery würde myAlert ausführen, wenn die Ressource bei /someurl antwortet.

2
joews 26 Nov. 2013 im 22:53

Muss einer var zugeordnet werden

Beispielsweise

var f = function () {};

Oder einem Funktionsargument zugeordnet

Fun(arg1, function (){});
0
Krishna Raj Salim 26 Nov. 2013 im 23:21