Javasscript frage, nur zur Verständnis?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
// Prompt mit der Frage "what is your name?" anzeigen
// und Nutzereingabe an Variable "name" weitergeben
var name = prompt('what is your name?');

// Mit "slice" einen Teil der Nutzereingabe von Position
// 0 bis 1 abfragen => erster Buchstabe in "firstChar"
var firstChar = name.slice(0,1);

// Diesen ersten Buchstaben der Nutzereingabe
// zum Großbuchstaben machen
var firstCharUp = firstChar.toUpperCase(); 

// Mit "slice" einen den Rest der Nutzereingabe 
// von Position 1 bis name.length also des Endes der
// Eingabe abfragen => rest in "restName"
var restName = name.slice(1,name.length);

// Rest in kleinbuchstaben umwandeln
var restNameLow = restName.toLowerCase();

// erster Buchstabe in groß und Rest in klein ausgeben
var capName = firstCharUp + restNameLow; 

// Eingegebenen Namen wohlformatiert mit großem
// Anfangsbuchstaben und dem Rest kleingeschrieben
// zurückgeben
alert('welcome ' + capName);

Randnotiz: Als kleine Fingerübung ist der Code ganz nett, jedoch deckt er nur einen winzigen Teil der möglichen Nutzereingeben ab.

Beispiel was der Code tun sollte:

Eingabe: "mUsTErmANN" => Ausgabe: "Mustermann"

Was dabei z.B. schieflaufen könnte:

// zweiter Name ist klein
mAX mUSTERMANN => Max mustermann

// wolltest du Nummern zulassen?
1234           => 1234

// Was wenn der Nutzer die Eingabe verweigert?
null           => TypeError
wandererds 
Fragesteller
 14.08.2022, 13:49

Sorry sehe, deine Antwort erst jetzt. Wieder was dazu gelernt und echt ausführlich erklärt, danke dir. Zum letzten mit dem output TypeError versuche ich mich gleich mit IF und ELSE.

1
doej13  14.08.2022, 14:23
@wandererds

Eine Varation von diesem Code hier (https://stackoverflow.com/a/43376967/6307611) wäre übrigens eine gute Alternative denke ich. Etwas wie: "name = name.toLowerCase().split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join(' ');". Der Code würde sich dann auch um Nachnamen kümmern.

0
wandererds 
Fragesteller
 14.08.2022, 14:29
@doej13

uff, ich bin leider noch ein blutiger Anfänger, für mich sind das noch Hieroglyphen.

0
doej13  14.08.2022, 17:01
@wandererds

Es sind eigentlich nicht viel neu. Du kannst bestimmte Funktionen aneinander hängen, wenn sie den richtigen wert zurückliefern wie zum Beispiel split [in mehrere Trümmer zerlegen wenn du dieses Zeichen findest], join [mit folgendem Zeichen trümmer wieder zusammenflicken], map(a => b) [nimm jedes Teil a und mach daraus Teil b]. Bleibt nur noch die Abwandlung der slice Funktion mit nur einem Parameter [ist dasselbe als wäre der 2. Parameter "name.length" - kann nämlich weggelassen werden] und charAt() [nim das Zeichen an der Position - Programmierer fangen halt an bei 0 zu zählen beim indizieren von Arrays (schubladen mit mehreren Fächern)] zu erklären.

1

Du liest ja einen Wert für Name ein, führst ein paar Methoden durch uns gibst den neu erzeugten Wert weiter.

CapName ist ja bloß der Wert vom ersten Zeichen in Großschreibung + dem Rest in Kleinschreibweise :)

Oder hab ich die Frage falsch verstanden?

LG

GQNQ

Woher ich das weiß:Berufserfahrung – Informationstechnologe und Freizeitnerd ;)
wandererds 
Fragesteller
 14.08.2022, 13:32

Wenn ich die HTML Datei öffne, öffnet er erst den prompt, dann den alert. Ich wollte wissen wie er das macht, obwohl ich unten nur einen alert zu stehen habe. mein Prompt ist ja nur eine variable, die nirgends als Befehl wiedergegeben wurde, oder ?

0
GoodQNextQx  14.08.2022, 13:34
@wandererds

Also wenn da zb steht "var name = prompt(..", dann führt Javascript den prompt durch und speichert deinen Input in ne Variable :)

1
wandererds 
Fragesteller
 14.08.2022, 13:39
@GoodQNextQx

dann ist das beim "prompt" ne besondere Situation oder ? er führt eine variable selbstständig durch. Ist das nur beim "prompt" so ? oder gibt's noch weitere Sonderfälle wie diese

0
GoodQNextQx  14.08.2022, 13:40
@wandererds

Ein Sonderfall ist es ja nicht wirklich. In der zweiten Zeile führt er ja auch "name.slice" aus und speichert das Ergebnis in ne neue Variable. Nur ist die nicht interaktiv und du merksts als Anwender nicht :)

1
wandererds 
Fragesteller
 14.08.2022, 13:48
@GoodQNextQx

also führt der den aus, weil "capName" = firstChar/restName und die wiederrum mit "name" verknüpft sind ?

0
GoodQNextQx  14.08.2022, 13:49
@wandererds

Der FirstChar is ja nur der erste Buchstabe aus der "name"-Variable rausgeschnippselt, restName ist halt der Rest. Was genau meinst du mit "den"?

0