• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Variablen Gültigkeit

ndb

New member
Hallo zusammen
Im Studium haben wir folgenden Code gesehen, den ich immer noch nicht ganz begreife. Könnt ihr mir weiterhelfen?
HTML:
<html><head>
<script type="text/javascript">
function rechne(a)
{
var ergebnis = a * a;
a = a - 1;
b = b - 1;
document.write("Ausgabe: " + b);
return ergebnis;
}
</script>
</head>
<body>
<script type="text/javascript">
var a = 3;
var b = 5;
document.write("<br/>Ergebnis: " + rechne(a)); 
document.write("<br/>Wert A: " + a); 
document.write("<br/>Wert B: " + b); 
</script>
</body></html>

Die Ausgabe lautet:
Ausgabe: 4
Ergebnis: 9
Wert A: 3
Wert B: 4

Kann mir jemand erklären, weshalb b infolge des Funktionsaufrufs um 1 auf 4 reduziert wurde, die Ausgabe von A allerdings auf der ursprünglich definierten Variable 3 beruht, obwohl a in der Funktion ebenfalls um 1 reduziert wurde?

Im Voraus besten Dank!
 
in einer funktion sind variablen aus dem scope dieser funktion und aus allen alle übergeordneten scopes sichtbar bis zum globalen scope.
im globalen scope liegt deine variable b welche du in der funktion rechne veränderst.
die variable a liegt im scope deiner funktion rechne, weil du diese als parameter übergeben hast. es gibt also 2 verschiedene variablen die beide a heißen. die globale var a = 3; und die lokale function rechne(a) in einer funktion werden variablen immer ausgehend vom scope der funktion nach "oben" bis zum globalen scope gesucht.
nennst du jetzt z.b. die variable in der funktion nicht a, sondern c, also
Code:
function rechne([B]c[/B])
{
var ergebnis =[B]c * c[/B];
a = a - 1;
b = b - 1;
document.write("Ausgabe: " + b);
return ergebnis;
}
dann findet deine funktion bei a = a - 1; auch die globale variable und ändert diese genau wie b
 
Zurück
Oben