Aber if ist in manchen Browsern schneller (in anderen sind beide Varianten identisch)
Ja, klingt komisch, is leider so.
Hat mich auch gewundert.
(v in o)
habe ich bewusst so gewählt, weil damit auch intuitiv deutlich wird, dass es nur darum geht, ob v der Name einer Eigenschaftin o
ist, oder nicht.
Bei der if-Variante wird dagegen der Inhalt o[v] abgefragt, nicht die bloße Tatsache, ob einer existiert.
Naja, du kannst auch if(v in o) schreiben, dann wird's noch deutlicher - ist aber eben ein bisschen langsamer.
Auch die Zuweisung von
!a.push(v)
ist Absicht: o[v] wird wegen der Negation nur mit einem booleschen Wert belegt (immerfalse
), der ohnehin nicht von Bedeutung ist. Deine if-Variante weist unnötig den ganzen Rückgabewert vonpush
zu (die aktuelle Länge von a).
Auch das hatte ich gemacht weil es eine unnötige Operation ist und ob man wirklich irgendetwas spart wenn man statt eines integer Wert einen boolschen Wert nimmt, halte ich für sehr fraglich.
Struppi.