Aufruf einer Funktion zu einem Handler JQuery geben
function test() {
var str = 'adarsh';
// f1(); - This gives an error.
$('body').click(function f1() {
console.log(str);
});
}
test();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Ich möchte wissen, warum das obige Snippet einen Fehler gibt, wenn ich versuche f1()
innerhalb der Funktionstest zuzugreifen.
Was ist die Funktion f1
Bereich?
Ich weiß, es ist nicht das Fenster, weil ich window.f1
nach dem Ausführen des obigen Snippets nicht zugreifen kann.
Hinweis: Ich weiß, dass ich Funktion f1
zuerst deklarieren und dann den Verweis auf sie in der click
Funktion übergeben. Ich möchte jedoch wissen, was es heißt, 'anonyme' Funktionen in solchen Kontexten zu benennen, wenn wir nirgendwo durch diesen Namen darauf zugreifen können.
Ihre 'f1()' Funktion ist auf nichts beschränkt. Die * Referenz * der Funktion wird nur dem Handler zur Verfügung gestellt. Daher können Sie nicht darauf zugreifen. –
Ich habe es funktioniert in [jsfiddle] (https://jsfiddle.net/omgtoblerone/d375u2d2/) –
@ JonathanBrooks, die nicht 'f1()' von irgendwo außerhalb der Click-Handler obwohl, was der OPs Punkt ist. –