dedlfix: Zahlenreihe mit JavaScript bearbeiten

Beitrag lesen

Tach!

So ein Vergleich ist technisch völlig gleichwertig zu einem mit ==, aber der Teil "stell sicher, dass die Typen gleich sind" des ===-Operators hat hier keinerlei Nutzen.

Die einen sagen so, die anderen sagen so. Andernorts wird gesagt, dass man stets typsicher vergleichen sollte.

Die Begründung erscheint mit ziemlich fadenscheinig. Es geht wohl nur darum, nicht über die Untiefen der Typumwandlungsregeln nachdenken zu müssen. Das bringt aber nicht viel, wenn das nur an solchen Stellen geschieht und man munter und froh genau diese Typumwandlungen im Rest des Programmes bewusst oder billigend in Kauf nimmt. Die sind ja nicht auf den ==-Oprator beschränkt.

Stattdessen plädiere ich dafür, sich der Regeln bewusst zu werden und nicht nur dort, sondern überall darüber nachzudenken, was passiert und was passieren kann und das nicht halbherzig zugunsten eines "hat irgendwer mal gesagt, mach ich schon immer so" wegzulassen.

Zur Übung empfehle ich diesen Vortrag namens Wat. Den ersten Durchlauf wegen des Unterhaltungswertes, und mindestens einen zweiten, um darüber nachzudenken, warum die gezeigten Ergebnisse zustandekommen (den Ruby-Teil kann man ja weglassen).

Ebenso interessant ist die Javascript-Typvergleichstabelle. Die Grundregel, nach der man alle Eigenheiten erklären kann, ist, dass bei den drei Grundtypen Number, String und Boolean bei Typungleichheit die Werte der Typen String und Boolean in den Typ Number konvertiert werden, bevor sie verglichen werden. Bei Referenztypen werden zwar üblicherweise die Referenzen und nicht die Inhalte verglichen, aber es gibt Ausnahmen bei einigen Arrays, wenn sie mit Zahlen verglichen werden (siehe verlinktes Bild). Wenn ein solcher Fall aber in der freien Wildbahn auftritt, sollte man den nicht mit === totschlagen, sondern sich lieber fragen, wie es überhaupt im Programmverlauf zu einem solchen Vergleich kommen konnte. Wie gesagt, sind Vergleiche nicht die einzigen Stellen, bei denen Typumwandlungen auftreten können, und anderenorts lässt sich die Typsicherheit nicht einfach mit einem dritten = erzwingen.

dedlfix.