Experten machen einen Umweg! Dies hat nichts mit der Schließung selbst zu tun, und ich weiß nicht, wie man den Titel bekommt, also habe ich gerade die Nummer gesammelt. Ich hoffe ich vergeben mir!
Heute gab mir ein Freund, der gerade JS erfuhr, mir ein Stück Code und fragte mich, warum die Methode nicht ausgeführt wurde. Der Code ist wie folgt:
Die Codekopie lautet wie folgt:
Funktion Makefunc (x) {
return function () {
Rückkehr x;
}
}
ALERT (MAKEFUNC (0));
Tatsächlich ist es nicht so, dass es nicht so ist, dass es nicht ausführt, sondern dass der Freund bedeutet, dass der Alarm "0", nicht function () {return x;}.
Es ist nicht so, dass das Skript falsch geschrieben ist, es ist nur so, dass es die Rückgabe nicht versteht, aus der aktuellen Funktion ausgeht und einen Wert aus dieser Funktion zurückgibt. Wenn die zurückgegebene Funktion eine Funktion ist, ist die zurückgegebene Funktion selbst auch die Funktion selbst.
Sie können den obigen Code wie diesen ändern, was wachsam ist (Makefunc (0) ()):
Die Codekopie lautet wie folgt:
Funktion Makefunc (x) {
return (function () {
Rückkehr x;
}) ();
}
Alert (Makefunc (0) ());
Wenn Sie das Ergebnis der Funktionsausführung zurückgeben möchten, müssen Sie zuerst die Funktion ausführen lassen, z. B.:
Die Codekopie lautet wie folgt:
Funktion Makefunc (x) {
return (function () {
Rückkehr x;
}) ();
}
ALERT (MAKEFUNC (0));
Hier ist eine anonyme Funktion.
Die Codekopie lautet wie folgt:
(function () {
Rückkehr x;
}) ();
In der ersten Halterung befindet sich eine anonyme Funktion, die zweite Halterung wird verwendet, um die anonyme Funktion aufzurufen, und Sie können die erforderlichen Parameter in der zweiten Halterung übergeben. Zum Beispiel:
Die Codekopie lautet wie folgt:
(Funktion (x, y) {
alarm (x + y);
}) (dreiundzwanzig);