David: Internet Explorer: lustige Berechnung

Folgendes Javascript ist sehr witzig im Internet Explorer:

<script language="Javascript"><!-- // h
 // var status;
 status = 1;
 status = (status + 1)%4;
 alert(status);
// e --></script>

Sobald man die auskommentierte Zeile einfügt wird das richtige Ergebnis ausgegeben: 2. Ansonsten interpretiert der IE (status + 1 )als String Verknüpfung also 11, dann macht er modulo 4  und gibt 3 aus.
Sehr lustiges Verhalten.

  1. <script language="Javascript"><!-- // h
    // var status;
    status = 1;

    Sehr lustiges Verhalten.

    Da ist nichts lustig. Traurig ist, daß Du das window-Objekt nicht kennst.

  2. <script language="Javascript"><!-- // h

    Hier fehlt das type Attribut. language ist veraltet und sollte nicht mehr verwendet werden.

    // var status;
    status = 1;
    status = (status + 1)%4;
    alert(status);
    // e --></script>

    Sobald man die auskommentierte Zeile einfügt wird das richtige Ergebnis ausgegeben: 2. Ansonsten interpretiert der IE (status + 1 )als String Verknüpfung also 11, dann macht er modulo 4  und gibt 3 aus.
    Sehr lustiges Verhalten.

    Nein, logisch.
    Der IE versucht immer rauszufinden welches Objekt du meinst, in diesem Falle liegt er noch nicht mal so falsch. Ohne var sprichst du window.status an, das ist eine Eigenschaft des window Objektes und zwar das was in der statuszeile angezeigt wird. Also ein String.

    Mit var deklarierst du eine neue undefinierte Variabel status, der du eine Zahl zuweist.

    Struppi.

    1. Vielen Dank.
      Jetzt verstehe ich dieses Verhalten.
      David