Struppi: Standardwert für Funktionsvariable?

Beitrag lesen

PHP und deine JavaScript-Variante gleichen sich im besagten Punkt nicht. Darauf will Struppi doch die ganze Zeit hinaus.

"Die ganze Zeit"? Na ja. ;-)

Natürlich ging es die ganze Diskussion darum, dass typeof == 'undefined' etwas anderes ist als x ? ... und das etwas anderes passieren kann.
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).

Die Frage war, wie man einen Defaultwert für eine Funktion erzeugt. Programmiertechnisch wird dieser genutzt, wenn es keinen Parameter gibt und dies ist nur dann der Fall, wenn der Parameter vom Typ 'undefined' ist.

Und ich will darauf hinaus (s. auch Ergänzung auf 0): *Ich* als Programmierer weiß, worauf *ich* zu achten habe - und ich kann dementsprechend programmieren. Selbst wenn etwas nur in 99,9% der Fälle funktioniert, ist das kein Problem, denn für die restlichen 0,1% kann *ich* mir eine andere Lösung suchen (in diesem Fall also eine "Doppelabfrage", wie Struppi es nannte, oder eben auch typeof). Worauf ich als Programmierer aber keinen Einfluß habe, ist der Surfer und seine Softwareausstattung. Wenn ich also eine Lösung nehme, die unnötigerweise nur auf 99,9% der Browser läuft, dann sind 0,1% der Surfer unnötigerweise ausgeschlossen.

Der Test auf typeof ist etwas komplett anderes als was du machst, man kann es mit deiner zwar simulieren das ist aber uneffektiv. Daher hättest du sagen sollen, 'früher machte man es so...'

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 und 2.) diejenigen die mit sochen Browsern surfen mit Sicherheit JS ausschalten (ich selber nutze noch hin und wieder den NC 3), da du auf ca. 70% aller Seiten eine oder mehrere Fehlermeldung erhälst (bei diesen Browsern ging noch bei jeder Fehlermeldung ein popup auf) und der Browser permanent abstürzt. D.h. du schließt die surfer nur aus, wenn du eine Funktionalität anbietest, die sich ohne JS nicht umsetzten läßt bzw. du den Fehler machst ein JS als notwendig anzusehen und es nicht notwendig wäre.

Aber wie so oft - das ist eine nutzlose Diskussion. Ich weiß es, du weißt es, Mathias und ein paar andere Wissen es, daß es Historische Versionen von JS gab (versuch mal ein sinnnvolles Skript auf dem IE 3 zum laufen zu kriegen), 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.

Was mich noch interessiert ist, ob die Typenkonvertierung bei älteren Browsern wirklich das macht was du sagst?
Also ist, false und "" gleich 0?

Struppi.