2017-09-11 1 views
0

Meine globale Variable ändert sich nicht, nachdem die Funktion in Node.js aufgerufen wird, wenn ich die Anwendung in Sublime Text 3 ausführe. Wenn ich sie in bash ausführe, ändert sie sich wie erwartet. Wenn ich "global.firstname = 'David'" durch "window.firstname = 'David'" ersetze und es in der Chrome-Konsole starte, ändert sich das wie erwartet.Warum wird meine globale Variable nicht aktualisiert, nachdem diese Funktion in Node.js aufgerufen wurde?

var firstname = 'Simon'; 

var addSurname = function(){ 

    var firstname = 'Gene'; 
    var surname = 'Holmes'; 
    var fullname = firstname + ' ' + surname; 
    global.firstname = 'David'; 
    console.log(fullname); 
}; 

addSurname(); 
console.log(firstname); 

// Gene Holmes 
// Simon 

Letztlich ich mag es Ausgabe

// Gene Holmes 
// David 

Warum nicht der "global.firstname = 'David'" statement meiner globale Variable mit dem Node.js in Sublime Text baut Aktualisierung 3 ?

+1

In node.js hat das globale Objekt keinen Namen. Es ist nicht "global" und es ist kein "Fenster". Es ist buchstäblich keine Variable verfügbar, die auf das globale Objekt zeigt. Die einzige Möglichkeit, direkt auf das globale Objekt zuzugreifen, ist 'this', aber das funktioniert nicht im strikten Modus. Glücklicherweise müssen Sie nicht auf das globale Objekt zugreifen, um mit globalen Variablen zu arbeiten. – slebetman

Antwort

2

Um eine globale var in einer Funktion verwenden Sie müssen es einfach nur als global zu definieren, mit var Schlüsselwort dann in einer Funktion den gleichen var namen nach der Änderung dieser var verwenden sie gespeichert werden zurück in globalen var. Sie brauchen also nicht global. oder so ähnlich.

var firstname = 'Simon'; 

var addSurname = function(){ 

    var firstnameTmp = 'Gene'; 
    var surname = 'Holmes'; 
    var fullname = firstnameTmp + ' ' + surname; 
    firstname = 'David'; 
    console.log(fullname); 
}; 

addSurname(); 
console.log(firstname);// Will output David. 
0

Warum zwei Variablen mit dem gleichen Namen verwenden?

var firstname = 'Simon'; 
 

 
var addSurname = function(){ 
 

 
    var firstname2 = 'Gene'; 
 
    var surname = 'Holmes'; 
 
    var fullname = firstname2 + ' ' + surname; 
 
    firstname = 'David'; 
 
    console.log(fullname); 
 
}; 
 

 
addSurname(); 
 
console.log(firstname);

Verwandte Themen