Don P: (CSS) Visibility-Eigenschaft lässt sich nicht ändern

Beitrag lesen

Hallo,

ok, ich wusste nicht, dass man in Javascript boolsche Variablen auch einfach wie normale Variablen benutzen kann, und dachte, man müsse die Variable erst mit einem Typ "belegen", aber nur mit true und false funktioniert es offensichlich auch.

true und false sind keine Variablen, sondern fixe Werte, sogenannte Primitives. Dazu zählen auch Strings und Zahlen. Es gibt sie auch in Objektform (dann sind es keine Primitives mehr), z.B liefert String("Text") ein String-Objekt, während "Text" einfach ein String-Primitive ist, Boolean(false) liefert auch ein Objekt, ebenso wie Number(2134).

Es gibt einen JavaScript Guru namens Douglas Crockford, von dem ich viel halte (Google findet seine Seiten). Der schreibt, dass man vor Klassennamen wie Boolean *immer* new notieren sollte und dass man vor allem new Boolean, new Number und new String gar nicht verwenden sollte.

Ich kann mir nur einen Fall vorstellen, wo z.B. ein new Boolean() Sinn machen würde: Wenn man eine Variable unbedingt per reference weitergeben will bzw. muss. Wenn z.B. ein Array Primitives wie false enthält, und man es kopiert, dann enthält das neue Array ebenfalls wieder Primitives, keine Referenz auf den ursprünglichen Wert. Ändert man dann die Kopie, dann ändert sich das ursprüngliche Array nicht, was aber erwünscht sein kann. Ob das aber überhaupt mit Boolean funktioniert, habe ich nicht getestet...

Ich bin zwar für jeden Tipp dankbar und bitte nicht falsch verstehen wenn ich sage, dass es mich wirklich nervt, wenn Leute, die das Endergebnis gar nicht kennen, ständig alles hinterfragen müssen.

In solche Diskusionen mische ich mich nicht ein. JS oder nicht JS, das soll jeder halten, wie er will. Die Frage nach dem Sinn deines Codes ging auch gar nicht in diese Richtung. Es ging nur um die Objekt- vs. Primitive-Sache.

Gruß, Don P