Calocybe: Nix Kurios, nur Typecasting nicht bedacht

Beitrag lesen

Hi there!

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.

Ich weiss ja nicht, welchen Browser Du verwendest, um das zu testen, aber das widerspricht nicht nur jeglicher Logik, sondern auch dem praktischen Verhalten meines Mozilla 1.2.1. ;-)

var n1 = "hans mustermann"; n1 = n1.split(' '); alert(typeof(n1)); alert(n1.length); alert(n1);

ergibt bei mir "object", "2", und "hans,mustermann", wie man es erwarten sollte. Warum der Typ einer Variable nach rechts propagiert werden sollte, ist fuer mich nicht nachvollziehbar. Wenn man einen bestimmten Typ /erwartet/, muss man in JS immer selbst fuer die Konvertierung sorgen. Z.B. konvertiert die alert()-Funktion jedes ihrer Argumente mit *.toString() zu einem String, bevor es diese ausgibt. (Uebergabe von Funktionsparametern und Zuweisung einer Variable sind im wesentlichen dasselbe.)

Im uebrigen moechte ich feststellen, dass 'name' *kein* reserviertes Wort ist, wie es im Thread mehrfach geaeussert wurde. Es wird lediglich in der traditionellen DOM-Hierarchy an vielen Stellen als Eigenschaft verwendet. Das ist aber vom Standpunkt von JavaScript[1] aus genauso wie 'fussball' - irgendein Eigenschaftsname, aber nichts reserviertes oder sonstwie besonderes. Die einzige Stelle, wo 'name' meines Wissens innerhalb von JavaScript[1] auftritt, ist als Eigenschaft des Error-Objekts. Das ist zwar ein 'native object', das macht 'name' aber immer noch nicht zu etwas besonderem.

Man sollte allerdings keine *globale* Variable 'name' verwenden, da damit die Eigenschaft window.name ueberschrieben wird. (Der globale Namensraum und die window-Eigenschaften sind in den Browsern sinnbefreiterweise ueberlagert. Man hielt das wohl mal fuer "einfacher".)

[1] Gemeint ist die Sprache an sich, ohne die zusaetzliche Objekthierarchie aus dem Browser-Umfeld. Also das, was in ECMA-262 spezifiziert ist.

So long

--
Bier trinken fetzt!!!