Ich verwende JavaScript und erstelle eine globale Variable. Ich definiere es außerhalb einer Funktion und möchte den globalen Variablenwert innerhalb einer Funktion ändern und von einer anderen Funktion aus verwenden. Wie mache ich das?
Ich verwende JavaScript und erstelle eine globale Variable. Ich definiere es außerhalb einer Funktion und möchte den globalen Variablenwert innerhalb einer Funktion ändern und von einer anderen Funktion aus verwenden. Wie mache ich das?
Antworten:
Verweisen Sie einfach auf die Variable innerhalb der Funktion. Keine Magie, benutze einfach den Namen. Wenn es global erstellt wurde, aktualisieren Sie die globale Variable.
Sie können dieses Verhalten überschreiben, indem Sie es lokal mit deklarieren. varWenn Sie es jedoch nicht verwenden var, ist ein in einer Funktion verwendeter Variablenname global, wenn diese Variable global deklariert wurde.
Aus diesem Grund wird es als bewährte Methode angesehen, Ihre Variablen immer explizit mit zu deklarieren var. Denn wenn Sie es vergessen, können Sie versehentlich anfangen, sich mit Globals herumzuschlagen. Es ist leicht, einen Fehler zu machen. In Ihrem Fall dreht sich dies jedoch um und wird zu einer einfachen Antwort auf Ihre Frage.
console.logsofort ausgeführt wird, die Ajax-Erfolgsfunktion jedoch erst zu einem späteren Zeitpunkt ausgeführt wird, wenn der Ajax-Aufruf tatsächlich eine Antwort zurückgibt. Dies ist ein grundlegender Punkt in Bezug auf die Asynchronität von Ajax: Code in Schließfunktionen wird nicht in der Reihenfolge mit dem Code um ihn herum ausgeführt. Dies ist wichtig zu verstehen, wenn Sie sich mit ereignisgesteuertem Code vertraut machen.
var a = 10;
myFunction();
function myFunction(){
a = 20;
}
alert("Value of 'a' outside the function " + a); //outputs 20
Verwenden Sie einfach den Namen dieser Variablen.
In JavaScript sind Variablen nur lokal für eine Funktion, wenn sie die Parameter der Funktion sind oder wenn Sie sie explizit als lokal deklarieren, indem Sie das varSchlüsselwort vor dem Namen der Variablen eingeben .
Wenn der Name des lokalen Werts denselben Namen wie der globale Wert hat, verwenden Sie das windowObjekt
Siehe diese jsfiddle
x = 1;
y = 2;
z = 3;
function a(y) {
// y is local to the function, because it is a function parameter
console.log('local y: should be 10:', y); // local y through function parameter
y = 3; // will only overwrite local y, not 'global' y
console.log('local y: should be 3:', y); // local y
// global value could be accessed by referencing through window object
console.log('global y: should be 2:', window.y) // global y, different from local y ()
var x; // makes x a local variable
x = 4; // only overwrites local x
console.log('local x: should be 4:', x); // local x
z = 5; // overwrites global z, because there is no local z
console.log('local z: should be 5:', z); // local z, same as global
console.log('global z: should be 5 5:', window.z, z) // global z, same as z, because z is not local
}
a(10);
console.log('global x: should be 1:', x); // global x
console.log('global y: should be 2:', y); // global y
console.log('global z: should be 5:', z); // global z, overwritten in function a
Mit ES2015 kam es zwei weitere Keywords constund let, die auch den Umfang einer Variablen (beeinflussen Language Specification )
<script>
var x = 2; //X is global and value is 2.
function myFunction()
{
x = 7; //x is local variable and value is 7.
}
myFunction();
alert(x); //x is gobal variable and the value is 7
</script>
varSie einfach nicht das Schlüsselwort innerhalb der Funktion, dann müssen Sie sich nicht damit befassendocument.getElementById("outside").value = x;
var a = 10;
myFunction(a);
function myFunction(a){
window['a'] = 20; // or window.a
}
alert("Value of 'a' outside the function " + a); //outputs 20
Mit window ['variableName'] oder window.variableName können Sie den Wert einer globalen Variablen innerhalb einer Funktion ändern.