jQuery global variable
How to-pass-Funktion a_href = $(this).attr('href');
Wert der globalen a_href
machen a_href="home"
var a_href;
$('sth a').on('click', function(e){
a_href = $(this).attr('href');
console.log(a_href);
//output is "home"
e.preventDefault();
}
console.log(a_href);
//Output is undefined
- Ja, das ziemlich gut aussieht.
- Es sollte so funktionieren, wie Sie schon erwarten.
- problem ist nur, wenn die
var a_href
ist in einen dom-ready-handler... im Variablen-deklarations-Brei werden in den globalen Raum oder verwenden Siewindow.a_href = $(this).attr('href')
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code sieht gut aus, außer die Möglichkeit, dass wenn die Variablen-Deklaration in einem dom zu Lesen handler, dann wird es nicht eine Globale variable ist... es wird eine closure-variable
Um die variable global, ist eine Lösung deklarieren Sie die variable im globalen scope
anders ist, legen Sie die variable als Eigenschaft des window-Objekts
Warum Konsole drucken undefined
Dass Sie immer die Ausgabe als
undefined
denn obwohl die variable deklariert ist, müssen Sie nicht initialisiert ihn mit einem Wert, der Wert der variable wird nur gesetzt, nachdem diea
element geklickt wird, wird der bis zu diesem Zeitpunkt die variable wird den Wertundefined
. Wenn Sie nicht deklarieren der variable wird es werfen eine ReferenceErrorsetzen Sie die variable auf window:
Können Sie vermeiden Sie die Deklaration globaler Variablen, indem Sie Sie direkt auf das Globale Objekt:
Nachteil dieser Methode ist, dass global.varName nicht lange existieren, dass bestimmte Codezeile ausgeführt wird, das kann man aber leicht umgangen.
Sie könnten auch erwägen eine Anwendungsarchitektur, in denen solche Annahmen statt einer Schließung üblich, alle Funktionen, die Sie benötigen, oder als Eigenschaften eines in geeigneter Weise zugänglich datenspeicher-Objekt.