2016-05-26 16 views
0

Sorry, wenn der Titel nicht mit meiner Frage übereinstimmt, weil ich es nicht mit Worten erklären kann, sondern nur mit einem Beispiel.Globale Variable in einer Funktion manipulieren

Hier ist ein wirklich einfaches Beispiel, mein Code ist nicht das Gleiche und vieles mehr:

var i=0; 
first(); 
function first() 
{ 
    i=1; 
    second(i); 
} 
function second(number) 
{ 
    number=2; 
} 

ich diesen Code versucht haben, gibt es 1.

Was ich hier will, ist zu ändern meine globale Variable, sagen zu meiner Funktion zweitens "Hey, du wirst immer globale Variablen ändern, aber die, die ich dir als Referenz übergebe, musst du ändern"

Wenn jemand die Antwort hat, wäre großartig! Er könnte viele Zeilen speichern: D

Vielen Dank im Voraus.

+0

Es ist immer von 'value' – Rayon

+0

schwer zu verstehen, passieren wird. 'Zahl' Variable wo definiert? Was ist die Variable, die Sie zurückgeben? 'i' oder' Nummer'? Warum überschreiben Sie "Nummer" als Parameter in Ihrer Funktion? Ich verstehe deine gewünschte Leistung wirklich nicht. –

Antwort

0

Vielleicht die var name vorbei als ein String Ihr Problem löst ...

var globalVar = 0; 
 

 
first(); 
 
function first() { 
 
    globalVar = 1; 
 
    changeGlobal('globalVar'); 
 
} 
 
function changeGlobal(v) { 
 
    window[v] = 2; 
 
} 
 

 
document.body.innerHTML = 'globalVar: '+globalVar;

+0

Ich habe versucht, Ihren Code mit https://jsfiddle.net, aber ich habe 1 Anzeige, wenn ich es mit Stackoverflow Ich habe 2 ... versuchen:/ –

+0

Es könnte ein Kontextproblem sein ... wenn der Code in einem läuft 'frame' /' iframe' müssen Sie überprüfen, welches 'window' Objekt Ihre Variable enthält ... vielleicht versuchen Sie,' window' durch 'top' zu ersetzen – rafaelcastrocouto

+0

top zeigt nichts an. Weiß nicht, ob ich jsfiddle vertrauen muss ... –

0

Primitive Werte wie ganze Zahlen von Wert in Javascript übergeben werden. Das bedeutet, dass first() immer i auf 1 setzt. Second() ist grundsätzlich no-op.

sollte dies erreichen, was Sie versuchen:

var i=0; 
first(); 
function first() 
{ 
    i=1; 
    i=second(i); 
} 
function second(number) 
{ 
    number=2; 
    return number; 
} 
+0

der Parameter der zweiten ist nutzlos und verwirrend dann – floribon

+0

Der Code war nur ein Beispiel. Ich kann die Zahl in diesem Beispiel nicht zurückgeben, weil ich in dem Code, den ich programmiere, einen .push() machen muss. –

+0

Wenn Sie ein globales mutieren möchten, können Sie einfach global ändern: function second() {i = 2}. Oder Sie könnten i in ein Objekt einbinden, das als Referenz übergeben wird. Als ein Wort der Warnung mit Globals, die überall mutiert sind, ist eine wirklich schlechte Praxis. – simoraman

Verwandte Themen