Hi,
Natürlich ging es die ganze Diskussion darum, dass typeof == 'undefined' etwas anderes ist als x ? ... und das etwas anderes passieren kann.
... worauf ich als Programmierer direkt Einfluß habe.
Auf den Surfer habe ich den halt nicht.
Wie immer wenn du diskutierst versuchst du die Unzulänglichkeiten deiner Varianten mit Workarounds zu umschiffen um dann hinterher zu erklären dass alles in Ordnung ist (genau wie bei der Frames diskussion).
Nun, *offensichtlich* sehe ich manche Dinge *prinzipiell* anders, als der "Mainstream der hier veröffentlichten Meinung"! ;-) Da könntest Du noch weitere hiesige Posts von mir durchgehen. 8-)) Nichtsdestotrotz postuliere ich meine "abweichenden Meinungen" und vertrete sie gar offensiv. Das wird sich auch nicht ändern - jedenfalls nicht ohne Grund - und schon gar nicht durch Versuche, sie mit Begriffen wie "Workarounds" zu belegen. ;)
Für mich ist z.B. ein "Workaround" das herumarbeiten/korrigieren eines Fehlers/nicht-standard-konformen Verhaltens. Davon kann hier jedoch (ebensowie aber auch bei der "Framesdiskussion" und anderen entsprechenden Beispielen), überhaupt kein Thema sein! Deswegen wirkt der Begriff auf mich in solchen Situationen eher wie ein gezielter Diffamierungsversuch (na ja, klingt jetzt schlimmer, als ich es bewerte/empfinde =;-)), was mich vollkommen kalt läßt, und IMHO auf denjenigen zurückfällt, der so unbedacht seine Worte wählt. ;-}
Beispiel (ja, ja - der "Hinkehinweis" ist schon im voraus eingeplant ;-)):
Q: Ich möchte an meinem Auto die Reifen wechseln. Wie mache ich das?
A1: Dafür nimmt man eine Hebebühne, und dann ...
A2: Du kannst dich aber nicht darauf verlassen, immer eine Hebebühne nutzen zu können. Du kannst auch einfach einen Wagenheber nehmen. Das geht dann so: ...
A1: Um Himmelswillen! Das ist doch ein Workaround und klappt nicht immer. In jeder Stadt findest Du heutzutage eine Hebebühne!
A2: Wenn mir definitiv eine zur Verfügung steht oder ich wirklich eine brauche, kann man sie natürlich nehmen (mache ich ja auch). Du weißt aber nicht, wann Du mal wechseln mußt, und kannst dich nicht darauf verlassen, eine Hebebühne zur Verfügung zu haben. Besser also, wenn man weiß, wie man mit einem Wagenheber umgeht - der ist in jedem Auto vorhanden ud somit *immer* nutzbar.
;-))
Deine Argumentation das es JS Versionen gibt, in denen typeof noch nicht existiert ist zwar richtig, spielt aber in der Praxis keine Rolle, da es 1.) kaum jemand geben wird, der Skripte schreibt, die überhaupt noch auf so alten Browsern laufen
Ja, leider. Vielleicht weil sich bei Webseite so viele Gelegenheits-"Programmierer" versuchen. Genauso wie es viele Gelegenheits-"Webdesigner" gibt, deren Seiten z.B. nur auf dem IE laufen (was ich, übrigens auch im Gegensatz zum hiesigen "Mainstream", *nicht* verurteile oder mit hämischen Kommentaren bedenke - ich postuliere halt "nur" andere Sichtweisen/Möglichkeiten).
Gibt ja nun wirklich genug Beispiele im Web, wo Code z.B. JS 1.5 ungetestet voraussetzt (oder IE-DOM, oder ...), und dann auf immer noch genutzten 1.3er-Browsern tutto komletto streikt. Was ist damit bewiesen? Daß man es anders (ich meine: besser) machen kann, wenn man nur Rücksicht nimmt und das Hirn einschaltet (keine Rede von "Mehrarbeit"! - und das Nachdenken muß ja auch sein, damit die Scripte nicht nur auf älteren, sondern auch auf zukünftigen Browsern laufen).
Daß ich *prinzipiell* so agiere, daraus habe ich nie einen Hehl gemacht (egal ob von JS 1.0 auf 1.1, auf 1.2, auf 1.3, auf 1.5, oder von HTML 1 auf 2, auf 3, auf 4, ...). Wo setzt *Du* deine Grenze, potentielle Nutzer ohne Not auszuschließen? Schließt Du nur JS-1.0-Surfer aus? Oder auch 1.1er? 1.3er? Nicht-IEs? Nicht-Flasher?
Ich frage mich das halt *überhaupt* nicht! Für mich ist jeder willkommen (halt von meinem Ursprung her "Verkäufer 'alter Schule'" - bereits mit väterlichen Genen und der Muttermilch so konditioniert 8-)). Und jeder wird nach besten Kräften unterstützt (OK, da wo diese Unterstützung in Mehrarbeit wie unterschiedlichen Parallel-Implementatioen mündet, überlege ich ein paar mal =;-) - aber das war ja hier nicht das Thema).
Aber wie so oft - das ist eine nutzlose Diskussion. Ich weiß es, du weißt es, Mathias und ein paar andere Wissen es,
Natürlich. :-))
daß es Historische Versionen von JS gab (versuch mal ein sinnnvolles Skript auf dem IE 3 zum laufen zu kriegen),
Also in meinem "Coding-Schätzkästlein" findest Du welche. Steht immer dabei, ab welcher JS-Verion sie funktionieren; JS 1.0 ist auch dabei.
Ein Größeres ist die Ermittlung der "Systemvariablen" http://Coding.vampirehost.de/Systemvariable. Die funktioniert auch problemlos z.B. mit Navigator 2 (also JS 1.0). Und sinnvoll ist das Script wohl auch - jedenfalls wenn man das am Bedarf mißt, der sich mir durch die Suchmaschinenanfragen auftut. ;)
Und die anderen Scripts sind so geschrieben/definiert, daß sie mit Browsern, die deren Funktionalität nun nicht (oder nur mit entsprechendem *Mehraufwand*) nutzen können, wenigstens friedlich und fehlerlos koexistieren.
Wenn mich also jemand fragt/mir mailt: Sag mal, auf welchen Browsern laufen deine Werke? Kann es irgendwo Probleme geben?, dann muß ich nicht nachschauen, überlegen und dann antworten: x. Browser-Generation problemlos, davor: ? - aberds psielt doch heutzutag keine Rolle mehr, versprochen!
Ich grunze vielmehr eine, ohne nachschauen zu müssende "1Answer4All"-Antwort: ein (zugegebenermaßen) selbstzufriedenes "Funktionalität y setzt Browsergeneration x voraus - Probleme gibt es aber auf *keinem* Browser, egal welcher Generation (jedenfalls im Normalfall - kann ja sein, daß ein Browser auch einen üblen Bug hat)."
dass ist für uns aus nostalgischer Sicht vielleicht interessant, aber ob dass hier jemand wirklich Wissen will, wenn er fragt, halte ich für sehr zweifelhaft.
Er will es bestimmt nicht wissen, weil er i.d.R. soweit gar nicht denken *kann* (mangels Erfahrung). *Ich* habe Erfahrung, und wenn ich die in meine Tips nicht einfließen lassen wollte, könnte ich sie mir IMHO auch gleich verkneifen - denn der Fragesteller sucht explizit nach "Erfahrung" (also bereits vorhandenen Lösungen).
Was mich noch interessiert ist, ob die Typenkonvertierung bei älteren Browsern wirklich das macht was du sagst?
Also ist, false und "" gleich 0?
Ja, die Typ-Konvertierung ist in der Grunddefinition von JS (weil dem so ist, hat man ja in einer späteren Version auch noch extra den "Vergleichsoperator ohne Typ-Konvertierung", "===", eingeführt 8-)). Von der Theorie abgesehen, pflege ich meine Scripte praktisch auch mit JS-1.0-Browsern zu testen ... ;-)
Gruß, Cybaer
PS: Und wenn ich gehässig wäre, könnte ich noch anfügen: Hey, *ich* kenne typeof und nutze es selbst. Ich kenne auch die Typ-Konvertierung und nutze sie selbst. Ich entscheide als Programmierer, welche Variante aus den mir zur Verfügung stehenden Möglichkeiten ich verwenden kann bzw. muß. Du kennst/kanntest nicht alle Varianten, bist aber der Meinung, daß die einzige, die *Du* kennst, auch die einzige "Richtige" ist. Ich bin beeindruckt ...
Aber gut, daß ich nicht gehässig bin! ;-) (nein, ehrlich nicht: Mit einem echt netten Lächeln hinterher!! :-))
PPS: Ich weiß, daß nict jeder so denken kann/will/möchte, wie ich es tue (bin ja auch ein Individuum ;-)) Aber *wenn* alle es täten, *dann* wäre das Internet unter Garantie problemloser/fehlerfreier und komfortabler nutzbar, als es real der Fall ist. :)
PPPS: Hey, ich muß heute auch noch was arbeiten! =;-))))
Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!