Sven Rautenberg: Nix Kurios, nur Typecasting nicht bedacht

Beitrag lesen

Moin!

beispiel:
var name="hans mustermann";
name = name.split(" ");
alert(name);

das alert gibt nun "hans,mustermann" aus, was natürlich nich mein verlangen war, ich wollte doch ein array?

Ich habe ein wenig rumgespielt in meiner URL-Zeile. Ergebnis:

Das von dir beobachtete Phänomen ist so, wie es auftritt, offenbar korrekt. Schuld dürfte das implizite Typecasting sein, was Javascript anwendet.

Wenn du so vorgehst:
name0="hans mustermann";
name1=name0.split(" ");
alert (typeof(name1)); // ergibt "object"
alert (name1.length); // ergibt 2
alert (name1[0]); // ergibt "hans"
alert (name1[1]); // ergibt "mustermann"
alert (name1); // ergibt "hans,mustermann" !

dann ist alles so, wie du es willst.

Wenn du hingegen so vorgehst, also der Stringvariablen das Ergebnis der Split-Operation zuweist:
name1="hans mustermann";
name1=name1.split(" "); // Hier ist das Problem!
alert (typeof(name1)); // ergibt "string"
alert (name1.length); // ergibt 15
alert (name1[0]); // ergibt "undefined"
alert (name1[1]); // ergibt "undefined"
alert (name1); // ergibt "hans,mustermann" !

dann wird ganz offenbar von Javascript festgestellt, dass name1 (den Namen habe ich geändert, um Probleme mit reservierten Wörtern auszuschließen - er ist aber legal!) ein String ist - und einem String kann man nur wieder einen String zuweisen, also wird das Array der Split-Operation in einen String umgewandelt.

Das sind aber alles Dinge, die du durchaus selber hättest rausfinden können. :) Wie gesagt: Ich habe dazu nur ganz wenig in der URL-Zeile rumgespielt (vorne javascript: eingeben und dann nacheinander alle Befehle - fertig).

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)