Heim  >  Artikel  >  Web-Frontend  >  JavaScript-Quick-Bits: Schlechte Vergleiche

JavaScript-Quick-Bits: Schlechte Vergleiche

Patricia Arquette
Patricia ArquetteOriginal
2024-10-17 06:18:29726Durchsuche

JavaScript Quick Bits: Bad Comparisons

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.

Grundlagen

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.

Wie es passiert

if (!(value <= 10)) {
  // ...

Wenn Sie auf diesen Code gestoßen sind, können Sie ihn ohne zu zögern in if (a > 10) { ändern.

  • Es ist kürzer.
  • Es ist einfacher zu lesen.
  • Für alle Normalwerte sind sie gleich.

Warum es wichtig ist

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.

Abschluss

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn