Variablennamen über fct hinweg / return

Ralf_fragt

Grünschnabel
Hi

Kann ich lokale Variablennamen innerhalb einer übergeordneten Funktion in einer aufgerufenen, untegeordneten Funktionen wieder verwenden - hier speziell die Variable, über die return-Werte zurück gegeben werden.

Bsp:
Die stets lokale Variable "is_valid" (Bool´scher Wert) wird in allen Funktionen, dort aber stets nur lokal verwendet. Sie trägt ihr stets lokales Ergebnis (innerhalb ihrer Funktion), mittels "return is_valid;" an aufrufende, übergeordnete Funkltion zurück.
Die als Paramater übergebene Variable "ID_DatumsFeld" wird durchgereicht.
Code:
function hauptsache_frisur_liegt_heute(ID_DatumsFeld)
{
   ...
   is_valid = datum_richtig(ID_DatumsFeld)
   ....
}

function datum_richtig(ID_FormFeld)
{
   ........
   is_valid = false;
   ........
   return is_valid;  // Rückgabe an function hauptsache_frisur_liegt_heute
}

Kann es hierbei sein, dass die Variable "is_valid" von Funktion "datum_richtig" den Wert "TRUE" erhält, wenn die Variable "is_valid" von Funktion "hauptsache_haare_liegen_heute" später den Wert "TRUE" erhält - und umgekehrt?

Danke und Gruß
Ralf
 
Moin Ralf,

wie kommst du darauf, dass diese Variable lokal existiert?

Ohne das Schlüsselwort var deklariert, sind Variablen globaler Natur.
 
ja sorry, die Faulheit... Die variablen waren natürlich auch lokal je fct mit var deklariert:

Code:
function hauptsache_frisur_liegt_heute(ID_DatumsFeld)
{
   var is_valid = false;
   ...
   is_valid = datum_richtig(ID_DatumsFeld)
   ....
}

function datum_richtig(ID_FormFeld)
{
   var is_valid = false;
   ........
   if(.................) 
   {
      ...........
      is_valid = false;
   }
   ........
   return is_valid;  // Rückgabe an function hauptsache_frisur_liegt_heute
}

Kann es fann denoch sein, dass sich die Inhalte von gleich benannten, lokalen Variablen ändern, wenn sie in einer anderen Funktion überschrieben werden (mal egal ob Boolsch oder sonst ein Typ) ?

Gruß Ralf
 
Hi,

solange eine Variable in ihrem Gültigkeitsbereich als lokal deklariert wurde, ist dieses Verhalten nicht möglich - zumindest mir noch nicht untergekommen.

Ciao
Quaese
 
Quase und Sven... vielen Dank!
:)

ich bin noch am Suchen, wo das Problem liegt. Eigentlich muss es sein, wie Ihr sagt. dennoch tauschen sich permanent drei Boolsche Variablen aus, obwohl
1. die jew. ermittelnde Funktion schon lange abgearbeitet ist.... und
2. die Inhalte nicht mehr geändert, sondern nur für spätere Auswertungen abgefragt werden.... Grrrrrrrrr
Die Ergebnisse der Abfragen verschieben sich immer um eine Variable nach unten, auch egal in welcher Reihenfolge ich die ermittelnden Funktionen aufrufe.

Spannend... ich kriegs noch hin :confused:

Euch erstmal vielen Dank!
Gruß Ralf
 
Zeige doch mal deinen kompletten Code :)

Folgendes sehe ich in den von dir geposteten Fragmenten als mögliche Ursache:

Code:
is_valid = datum_richtig(ID_DatumsFeld)

hauptsache_frisur_liegt_heute() belegt also die Variable mit dem Rückgabewert von datum_richtig()

Ändern sich nun die Kriterien, anhand derer dieser Rückgabewert ermittelt wird, hätte dies natürlich auch Auswirkungen auf die Variable in der anderen Funktion.
 
Zurück