Michael N.: parseInt - Bug oder Mißverständnis

Beitrag lesen

Hallo Michael,

danke fuer die Aurklaerung!

Ich hatte zwar auch schon an was Oktales gedacht, aber ich konnte es nicht recht glauben. Wirklich ne fiese Falle!

viele Gruesse
  Stefan Muenz

Hallo Stefan,

die Falle ist noch 'ne Spur fieser:
Uebergibt man parseInt() Werte mit fuehrender Null, so interpretiert er sie oktal, ohne die fuehrende Null wird alles automatisch dezimal interpretiert, das steht aber dann nirgendwo mehr, das erfaehrt man nur durch ausprobieren.

Und noch ein Nachtrag: den Parameter "Base" habe ich im "JavaScript Guide" zum Netscape Navigator Version 4.0 unter parseInt() als optionalen Parameter "radix" gefunden, diese Sonderfunktionalitaet der Zeichenkette, um die sich dieser Thread dreht ist aber nicht dokumentiert.

Aber es gibt noch mehr solche "Scherze". Wenn man z.B. in einer Zeichenkette eine Zahl hat, dann kann man nachdem man sie extrahiert hat (ueber split()), davon zwar ohne Probleme subrahieren, eine Addition ist aber nicht so ohne weiteres moeglich.

Beispiel:

function demo()
{
  var Datum     = "1998-12-31";
  var arrDatum = Datum.split("-");
  var Jahr        = arrDatum[0];
  var Monat     = arrDatum[1];
  var Tag         = arrDatum[2];

var BspJahrEins = Jahr - 1;
  var BspJahrZwei = Jahr + 1;
  var BspJahrDrei = Jahr - 1 + 2;

var AusgDatum = BspJahrEins + "-" + Monat + "-" + Tag;
  alert(AusgDatum);

var AusgDatum = BspJahrZwei + "-" + Monat + "-" + Tag;
  alert(AusgDatum);

var AusgDatum = BspJahrDrei + "-" + Monat + "-" + Tag;
  alert(AusgDatum);
}

Beim ersten alert erhaelt man dann ausgegeben: "1997-12-31";
Beim zweiten alert erhaelt man dann ausgegeben: "19981-12-31"
Und beim dritten alert erhaelt man dann ausgegeben: "1999-12-31"

Verrueckt oder?

Bis dann

Michael N.