Frage von Fireteufel, 39

Javascript Variable definieren?

Hallo Leute, es geht mal wieder um Javascript und zwar wenn ich diesen Code kopiere und die Definition von "name" weglasse funktioniert alles, wenn ich jetzt jedoch "alter" weglasse bekomme ich immer eine Fehlermeldung.... Selbst wenn ich beide Definitionen weglasse und erst ab name=prompt beginne. Kommt das erste prompt ohne Probleme jedoch bei alter nicht. Wieso kommt Javascript ohne Definition von Name klar, aber nicht von alter?

 'use strict';
  var name  = '';
  var alter = '';
 
  name = prompt('Bitte geben Sie Ihren Namen ein!', name);
  alter = prompt('Bitte geben Sie Ihr Alter ein!', alter);
 
  if (alter < 18) {
    alert('Du kommst hier net rein!')
  }
  else {
    var ausgabe = 'Hallo, ' + name;
    alert(ausgabe);
  }
Antwort
von mastema666, 13

Das könnte daran liegen, dass "alter" dann nicht existiert, also wenn du die Variable nicht definierst, "name" dagegen ist sozusagen "vorbelegt" weil es ein Attribut des "a" Tags z.B. ist sowie eine Funktion, die den Namen einer anderen Funktion oder eines Objekts z.B. zurückliefert.

Siehe auch: 
http://stackoverflow.com/questions/2663740/what-is-the-name-keyword-in-javascrip...

Und allgemein für Worte, die man in JS nicht als Variablen-/Funktionsnamen etc benutzen sollte:
http://www.w3schools.com/js/js\_reserved.asp

Kommentar von Fireteufel ,

Ich danke dir! 

Antwort
von Danksa, 8

Also ich würde sagen, dass der Fehler in der Zeile mit der If-Abfrage kommt. Da alter ja nicht definiert wurde, kann es dieses auch nicht abfragen.

Weiter unten bei:

var ausgabe = 'Hallo, ' + name;

ist die Variable name zwar auch nicht definiert, aber wird dann einfach durch "nichts" ersetzt.

Das wäre meine Theorie

Antwort
von ceevee, 14

Deine prompt-Kommandos sind falsch. Richtig wäre eher

name = prompt('Bitte geben Sie Ihren Namen ein!', "");
alter = prompt('Bitte geben Sie Ihr Alter ein!', "");

bzw. den zweiten Parameter kannst du ganz weglassen, also

name = prompt('Bitte geben Sie Ihren Namen ein!');
alter = prompt('Bitte geben Sie Ihr Alter ein!');

http://www.w3schools.com/jsref/met_win_prompt.asp

Der zweite Parameter ist der Default-Text, der im Prompt steht. geri3d hat schon recht mit seinem Ansatz, allerdings ist "name" das reservierte Schlüsselwort. 

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Fu...

in "name" steht an der Stelle also der Name deiner Funktion. "alter" ist undefined und wenn du undefined an den Prompt übergibst, dann knallt es.

Antwort
von geri3d, 25

Moglicherweise ist "alter" ein reserviertes schlüsselwort, ich kann mich irren aber probier mal ein anderes Wort.

Kommentar von Fireteufel ,

Ich hab mal zum probieren meine Variable name umbenannt und jetzt bekomme ich bei dieser Variable ebenfalls eine Fehlermeldung. Heißt sie wieder name ist wieder alles i.O. 

Kommentar von geri3d ,

Ich kann nicht hellsehen, welche Fehlermeldung ist das?

Kommentar von Fireteufel ,

"hallo" is not defined... hallo ist jetzt einfach mal die Variable

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten