"2" + "2" – "2" ist 20

<!DOCTYPE html>
<html lang="de-DE">
<head>
<meta charset="UTF-8" />
<title>Ist Javascript krank?</title>
</head>
<body>
<h1>Bullshit-Vergleich</h1>
<pre>
if (&quot;2&quot; + &quot;2&quot; - &quot;2&quot; == 20) alert (&quot;Javascript ist krank&quot;);
</pre>
<script type="text/javascript">
if ("2" + "2" - "2" == 20) alert ("Javascript ist krank");
</script>
</body>
</html>

Screenshot, wie es aussieht, wenn man diese Datei im Webbrowser öffnet -- mit Messagebox »Javascript ist krank«, weil der Operator + als Stringverkettung benutzt, der Operator - aber zu einer Umwandlung des Strings in die Zahl 22 führt, so dass das Ergebnis 20 herauskommt. Über den Operator == will ich mich gar nicht weiter auslassen.

Selbst ausprobieren? 😉

Dieser Beitrag wurde unter Technisches abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

8 Antworten zu "2" + "2" – "2" ist 20

  1. rolak 麻 sagt:

    Wenn ich es recht sehe, liegt der Fehler im Argument von alert() – wäre dies codesnippet von mir, müßte dort ein »ua deswegen finde ich es so ungemein gräßlich, in JS zu programmieren oder gar zu debuggen« reingezwängt werden.
    Denn gemäß seines eigenen, zugegebenermaßen recht kranken Regulariums läuft JS hier pumperlgsund durch die Gegend: »+« concateniert stringOperanden, »-« wandelt vor dem Aktivwerden stringOperanden in Zahlen, links nach rechts unter GleichPriorisiertem ist Standard, also
      «2″ + »2″ → »22″
      «22″ – »2″ ⇒ 22 – 2 → 20
      20 == 20 → TRUE
    Siehe auch dieser Frage.

  2. rolak 麻 sagt:

    Wo zum Henker ist denn in der Mitte der letzten Zeile das
      «jene Antwort zu«
    geblieben und warum ist die AntwortURL in den FragenLink gerutscht?
    (die ScienceBlogs()-Vorschau zeigte beim Test das, was mir vorschwebte)

    • Ooops, das war mit hoher Wahrscheinlichkeit ein Bug in WordPress. 😉

      In der Datenbank steht der Kommentar jedenfalls vollständig. Das Problem tritt erst auf, wenn der Kommentar hier dargestellt werden soll, dabei wird er verstümmelt und die beiden Links werden ganz komisch zusammengefasst. Ich muss mal ein bisschen Ursachenforschung betreiben (und dafür PHP lesen, was beinahe noch schlimmer als Javascript am Hirnchen nagt) und vermutlich einen Bug filen, wenn ich dazu komme. Vermutlich ist da ein kleiner Unfall mit einem Regex für die Filterung von HTML-Tags passiert.

      Mal schauen, wie viele WordPress-Versionen es braucht, bis dieser Fehler wieder draußen ist. Es gibt ja leider Wichtigeres für die Entwickler… 🙁

  3. rolak 麻 sagt:

    wo geblieben?

    Grad eben auf dem KeramikThron erblühte eine Hypothese: bringen zuviele Gänsefüßchen den KommentarParser aus dem Takt? Sollte hierzublog jeder immer

    "Gänsegefußtes nur &quot;-gerahmt eintippen?"

    • Ich habe gerade mal testweise das »Gänsefüßchen-Plugin« Intypo deaktiviert, und daran lag es nicht, obwohl das sehr wohl eine Möglichkeit war (das Plugin ist auch nicht gerade problemlos). Es ist vermutlich ein Bug im WordPress-Kern. Ich habe kein anderes Plugin mehr verbaut, das die Kommentare für die Ausgabe mitformatiert.

      Und ja, ich habe den Cache für meinen Test geleert. Diese Hand hatte ich schon einmal im Gesicht.

  4. rolak 麻 sagt:

    beinahe noch schlimmer

    Wir scheinen ähnliche NichtVorlieben zu haben :•)

    Cache .. geleert

    Und ein ähnliches NichtDranDenkRisiko-Spektrum.

  5. rolak 麻 sagt:

    Das Problem ist viel weiter verbreitet als gedacht: Heinrich Zankl: Irrwitziges aus der Wissenschaft. Hab heute morgen in der Pause fast den halben Kaffee verprustet…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.