Heim > Artikel > Web-Frontend > JavaScript-Quick-Bits: Schlechte Vergleiche
Kleine Käfer können sich von unerwarteten Orten einschleichen. Falsche Werte können dazu führen, dass Ihre bedingte Logik auf unerwartete Weise fehlschlägt. Werfen wir einen kurzen Blick auf die Kopfschmerzen, die schlimme Ungleichheit mit sich bringt.
Diese Funktionen sind nicht identisch. Sie sind meistens gleich, weisen aber einen ganz spezifischen Unterschied auf. Siehst du es?
const one = (a) => a > 10; const two = (a) => !(a <= 10);
Immer wenn wir Ungleichheitsprüfungen mit undefiniert oder NaN durchführen, ist das Ergebnis falsch. Wenn wir nicht explizit auf Randfälle prüfen, können zwei „äquivalente“ Prüfungen unterschiedliche Antworten liefern.
if (!(value <= 10)) { // ...
Wenn Sie auf diesen Code gestoßen sind, können Sie ihn ohne zu zögern in if (a > 10) { ändern.
Aber wir bekommen nicht immer normale Werte. Dies könnte eine bahnbrechende Änderung an Ihrem Code sein. Dies kann dazu führen, dass die Fehlerbehebung sehr schwierig ist. Nichts in diesem einfachen Code deutet darauf hin, dass wir auf „schlechte“ Werte stoßen könnten, sodass Sie ihn möglicherweise völlig übersehen.
Typsicherheit wird das Problem auch nicht beheben, da NaN eine Zahl ist ... es ist nur eine schlechte Zahl.
Wenn Sie in Ihrem Code auf einen seltsamen Zustand wie diesen stoßen, fragen Sie sich, was mit dem falschen Wert passiert, wenn Sie ihn ändern. Hoffentlich verhindert Ihr Code, dass Sie einen schlechten Wert erhalten und schlechte Berechnungen durchführen, aber wenn Sie diese Änderungen ein wenig defensiv angehen, kann dies Ihrem zukünftigen Ich eine Menge Ärger ersparen.
In solchen Fällen ist es in der Regel besser, explizit auf schlechte Werte zu prüfen. Diese kommunizieren mögliche Eingaben und erwartete Ergebnisse klar an andere Entwickler.
if (Number.isNaN(value) || value > 10) { // ...
Das obige ist der detaillierte Inhalt vonJavaScript-Quick-Bits: Schlechte Vergleiche. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!