JavaScript Simple Frage: Lokale und globale Variable mit selben Namen

darton

Lt. Junior Grade
Registriert
Okt. 2004
Beiträge
282
Hallo!
Ich habe ein simple Javascript-Frage, die schnell zu beantworten sein müsste. Irgendwie finde ich die Lösung gerade nicht über Google.
Code:
var foo;

function do_something(foo) {
    foo = foo;
}
Mit welchem Schlüsselwort kann ich die globale Variable foo mit dem Funktionsparameter foo unterscheiden?
 
gar nicht, einfach aus dem Grund dass der Scope ja nochmal verschachtelt sein kann (closure). dann müsste man ja angeben können von welcher scope-ebene man die variable meint
 
Warum nutzt du nicht einfach Unterstriche für den Anfang von Variablen oder schreibst diese in Großbuchstaben? Das was du vor hast, kannst du in keiner mir bekannten Programmiersprache machen. Eine Ausnahme wäre bspw. der Einsatz mit Namespaces, aber nicht als irgendwo definierte globale Variable.
 
Die Unterscheidbarkeit sicherzustellen liegt in der Verantwortung des Programmierers, z.B. duch ein entsprechendes Namenskonzept :)
 
Aso, dachte es würde wie in Java sowas wie "this." geben oder wie in PHP "self::". Gut, dann werde ich die Variablen einfach passend bennenen.
 
this und self beziehen sich auf Objekte und Klassen, nicht aber Funktionen. In Java ist zudem alles objektorientiert und alles gekapselt. In JavaScript kannst du genauso mit Klassen und Objekten arbeiten, du musst nur wissen wie.
 
du kannst das sehr wohl unterscheiden.

du hast da nur nen kleinen fehler drin. wenn du in der funktion eine lokale variable möchtest, dann musst du da das schlüsselwort "var" davor schreiben, ansonsten greifst du immer auf die globale variable zu.

auf die globale variable kannst du mit window.foo zugreifen.

beispiel:

var foo = 'bar';

function do_something () {
var foo = 'foo';

alert (foo); // lokale variable
alert (window.foo); // globale variable
}

do_something ();


dass das ganze völlig unsauber ist, ist dabei eine ganz andre geschichte ;)
 
mightyplow schrieb:
du hast da nur nen kleinen fehler drin. wenn du in der funktion eine lokale variable möchtest, dann musst du da das schlüsselwort "var" davor schreiben, ansonsten greifst du immer auf die globale variable zu.
In seinem Beispiel ist 'foo' auch ein Parameter der Funktion, dementsprechend auch ohne 'var' lokal deklariert. Ansonsten hast du Recht.
 
Sollte in dem Fall nicht aber das "foo" innerhalb der Funktion eine lokale Variable sein? oder ändert sich bei Wertänderungen dieser foo-Variable innerhalb der Funktion auch der Wert der "var foo" ausserhalb der Funktion?
 
@character:
sorry, das mit dem parameter hab ich gar nich gesehn. man kann dennoch durch das window-objekt auf die globale variable zugreifen.

das bringt mich zu voodoo44:

foo hat außerhalb der funktion immer noch den wert, den es vorher hatte. js scheint eine eine kopie als lokale variable von dem parameter anzulegen.
 
mightyplow schrieb:
foo hat außerhalb der funktion immer noch den wert, den es vorher hatte. js scheint eine eine kopie als lokale variable von dem parameter anzulegen.
Ich hatte es nicht ausprobiert - aber an sich ist es so mMn auch richtig. Wäre ein anderes Verhalten beobachtet worden, hätte ich mir Sorgen gemacht.
 
Zurück
Oben