Ich war neugierig, was der schnellste Weg wäre, um zu überprüfen, ob ein JS-Objekt (das als Wörterbuch verwendet wird) eine bestimmte Eigenschaft hat.
Und ich war von den Ergebnissen verblüfft. Überzeugen Sie sich selbst: Ссылка
In Chrome ist die Keyword-Methode in
96% langsamer als die Punktsyntax.
Und in Firefox ist es auch um 80% langsamer. IE zeigt etwa 50% langsamer
Was zum Teufel? Mache ich etwas falsch? Ich stellte mir vor, dass das "in" -Schlüsselwort optimiert werden würde, da es nicht einmal den Wert erhalten muss, sondern nur einen booleschen Wert zurückgibt. Aber anscheinend war ich einfach falsch.
Sie sind nicht gleich .
obj.prop
überprüft, ob eine Eigenschaft nicht falsy ist (nicht null
, undefined
, 0
, ""
, false
).
prop in obj
überprüft, ob eine Eigenschaft in einem Objekt vorhanden ist (einschließlich seiner Prototypkette)
Und schließlich haben Sie obj.hasOwnProperty('prop')
, das prüft, ob das Objekt prop
hat, da es eigene Eigenschaft ist (kann keine vererbte sein).
Beispiel
%Vor%Ich denke, dass Leistung kein Problem sein sollte, solange Sie nicht gleichzeitig Millionen von Überprüfungen durchführen. Wenn Sie jedoch den schnellsten Weg wollen, können Sie:
verwenden %Vor% Was prüft, ob die Eigenschaft nicht null
oder undefined
ist. In dieser Form können andere Falsy-Werte wie ""
oder 0
nicht stören, und Sie sind immer noch super performant.
Tags und Links javascript optimization performance