Gibt es einen gravierenden Leistungsunterschied zwischen der Verwendung von undefined oder null als Dummy-Wert in JS?


Antwort 1:

Hängt vom Dataset ab, aber Sie können immer die Prüfung von JavaScript für ungültig und undefiniert verwenden:

// void 0 gibt 'undefined' zurück, nicht das nicht reservierte Schlüsselwort, sondern den tatsächlichen Wert 'undefined'
var a;
var b = null;
console.log (a == void 0, b == void 0);
// gibt 'true true' aus

Es gibt kaum oder gar keinen Leistungsunterschied zwischen beiden, da "Null" in den Wert "undefiniert" aufgelöst wird. Der Grund, warum wir "void 0" verwenden, ist, dass es kurz und idiomatisch ist und die Leute verstehen können, was es tut, wenn sie es sehen.

Diese großartige Antwort auf Stack Overflow sollte alle Fragen zum Thema beantworten.


Antwort 2:

Nein. Es kann einen Unterschied zwischen der Verwendung von Primitiven und solchen Globalen geben, aber es ist normalerweise nicht ernst (es sei denn, ich meine es ernst). Wenn ich die Leistung ernst nehme, kann ich die Leistung meines Codes direkt profilieren, um herauszufinden, wie er genau aussieht. Das heißt, ich gehe nicht zu Quora und stelle Fragen wie diese, sondern erstelle ein Profil für meinen Code. Manchmal (oder zu oft) gehe ich auch auf jsperf, um nach bestimmten Details zu suchen, aber viele der dortigen Proben vereinen zu viele Faktoren, um von praktischem Wert zu sein.

JavaScript-Engines verfügen über interne Optimierungen, die wir im Laufe der Zeit kennenlernen. Anschließend werden sie aktualisiert und geändert. Daher muss ich die bizarren Gewohnheiten, mit denen ich so hart gearbeitet habe, verlernen.

Die Werte null und undefined sind global und andere nicht (z. B. null vs false), aber der Leistungsunterschied spielt eine viel geringere Rolle als in der Vergangenheit, als Browser viel langsamer waren. Aufgrund der Mischung aus internen Browseroptimierungen (die sich zur Laufzeit ändern) und praktischen Details wie Scope-Lookups usw. ist es schwierig, bestimmte Fragen zur Leistung zu beantworten. Wenn Sie also false und dann eine Zahl oder ein Objekt verwenden, können diese internen Leistungsverbesserungen möglicherweise zunichte gemacht werden (konsistente Eingabe hilft also bei allem).

Wenn Sie weniger Arbeit erledigen, im lokalen Bereich bleiben, die Geschwindigkeit verbessern, weniger Variablen für den Arbeitsspeicher verwenden und die Entwicklertools immer die beste Methode zur Beantwortung bestimmter Fragen wie dieser sind.

Erste Schritte mit der Analyse der Laufzeitleistung | Tools für Webentwickler | Google-Entwickler

Eine ernste Frage wäre: Funktioniert es für den Kunden oder nicht? Arbeite ich an etwas, das für die Menschen nützlich ist?


Antwort 3:

Nein. Es kann einen Unterschied zwischen der Verwendung von Primitiven und solchen Globalen geben, aber es ist normalerweise nicht ernst (es sei denn, ich meine es ernst). Wenn ich die Leistung ernst nehme, kann ich die Leistung meines Codes direkt profilieren, um herauszufinden, wie er genau aussieht. Das heißt, ich gehe nicht zu Quora und stelle Fragen wie diese, sondern erstelle ein Profil für meinen Code. Manchmal (oder zu oft) gehe ich auch auf jsperf, um nach bestimmten Details zu suchen, aber viele der dortigen Proben vereinen zu viele Faktoren, um von praktischem Wert zu sein.

JavaScript-Engines verfügen über interne Optimierungen, die wir im Laufe der Zeit kennenlernen. Anschließend werden sie aktualisiert und geändert. Daher muss ich die bizarren Gewohnheiten, mit denen ich so hart gearbeitet habe, verlernen.

Die Werte null und undefined sind global und andere nicht (z. B. null vs false), aber der Leistungsunterschied spielt eine viel geringere Rolle als in der Vergangenheit, als Browser viel langsamer waren. Aufgrund der Mischung aus internen Browseroptimierungen (die sich zur Laufzeit ändern) und praktischen Details wie Scope-Lookups usw. ist es schwierig, bestimmte Fragen zur Leistung zu beantworten. Wenn Sie also false und dann eine Zahl oder ein Objekt verwenden, können diese internen Leistungsverbesserungen möglicherweise zunichte gemacht werden (konsistente Eingabe hilft also bei allem).

Wenn Sie weniger Arbeit erledigen, im lokalen Bereich bleiben, die Geschwindigkeit verbessern, weniger Variablen für den Arbeitsspeicher verwenden und die Entwicklertools immer die beste Methode zur Beantwortung bestimmter Fragen wie dieser sind.

Erste Schritte mit der Analyse der Laufzeitleistung | Tools für Webentwickler | Google-Entwickler

Eine ernste Frage wäre: Funktioniert es für den Kunden oder nicht? Arbeite ich an etwas, das für die Menschen nützlich ist?


Antwort 4:

Nein. Es kann einen Unterschied zwischen der Verwendung von Primitiven und solchen Globalen geben, aber es ist normalerweise nicht ernst (es sei denn, ich meine es ernst). Wenn ich die Leistung ernst nehme, kann ich die Leistung meines Codes direkt profilieren, um herauszufinden, wie er genau aussieht. Das heißt, ich gehe nicht zu Quora und stelle Fragen wie diese, sondern erstelle ein Profil für meinen Code. Manchmal (oder zu oft) gehe ich auch auf jsperf, um nach bestimmten Details zu suchen, aber viele der dortigen Proben vereinen zu viele Faktoren, um von praktischem Wert zu sein.

JavaScript-Engines verfügen über interne Optimierungen, die wir im Laufe der Zeit kennenlernen. Anschließend werden sie aktualisiert und geändert. Daher muss ich die bizarren Gewohnheiten, mit denen ich so hart gearbeitet habe, verlernen.

Die Werte null und undefined sind global und andere nicht (z. B. null vs false), aber der Leistungsunterschied spielt eine viel geringere Rolle als in der Vergangenheit, als Browser viel langsamer waren. Aufgrund der Mischung aus internen Browseroptimierungen (die sich zur Laufzeit ändern) und praktischen Details wie Scope-Lookups usw. ist es schwierig, bestimmte Fragen zur Leistung zu beantworten. Wenn Sie also false und dann eine Zahl oder ein Objekt verwenden, können diese internen Leistungsverbesserungen möglicherweise zunichte gemacht werden (konsistente Eingabe hilft also bei allem).

Wenn Sie weniger Arbeit erledigen, im lokalen Bereich bleiben, die Geschwindigkeit verbessern, weniger Variablen für den Arbeitsspeicher verwenden und die Entwicklertools immer die beste Methode zur Beantwortung bestimmter Fragen wie dieser sind.

Erste Schritte mit der Analyse der Laufzeitleistung | Tools für Webentwickler | Google-Entwickler

Eine ernste Frage wäre: Funktioniert es für den Kunden oder nicht? Arbeite ich an etwas, das für die Menschen nützlich ist?


Antwort 5:

Nein. Es kann einen Unterschied zwischen der Verwendung von Primitiven und solchen Globalen geben, aber es ist normalerweise nicht ernst (es sei denn, ich meine es ernst). Wenn ich die Leistung ernst nehme, kann ich die Leistung meines Codes direkt profilieren, um herauszufinden, wie er genau aussieht. Das heißt, ich gehe nicht zu Quora und stelle Fragen wie diese, sondern erstelle ein Profil für meinen Code. Manchmal (oder zu oft) gehe ich auch auf jsperf, um nach bestimmten Details zu suchen, aber viele der dortigen Proben vereinen zu viele Faktoren, um von praktischem Wert zu sein.

JavaScript-Engines verfügen über interne Optimierungen, die wir im Laufe der Zeit kennenlernen. Anschließend werden sie aktualisiert und geändert. Daher muss ich die bizarren Gewohnheiten, mit denen ich so hart gearbeitet habe, verlernen.

Die Werte null und undefined sind global und andere nicht (z. B. null vs false), aber der Leistungsunterschied spielt eine viel geringere Rolle als in der Vergangenheit, als Browser viel langsamer waren. Aufgrund der Mischung aus internen Browseroptimierungen (die sich zur Laufzeit ändern) und praktischen Details wie Scope-Lookups usw. ist es schwierig, bestimmte Fragen zur Leistung zu beantworten. Wenn Sie also false und dann eine Zahl oder ein Objekt verwenden, können diese internen Leistungsverbesserungen möglicherweise zunichte gemacht werden (konsistente Eingabe hilft also bei allem).

Wenn Sie weniger Arbeit erledigen, im lokalen Bereich bleiben, die Geschwindigkeit verbessern, weniger Variablen für den Arbeitsspeicher verwenden und die Entwicklertools immer die beste Methode zur Beantwortung bestimmter Fragen wie dieser sind.

Erste Schritte mit der Analyse der Laufzeitleistung | Tools für Webentwickler | Google-Entwickler

Eine ernste Frage wäre: Funktioniert es für den Kunden oder nicht? Arbeite ich an etwas, das für die Menschen nützlich ist?