otto der viertel vor zwölfte: seltsames Verhalten einer Variablen

Hallo,

ein Link übergibt in folgender Form eine Variable:

  
<a href="javascript:zeigInhalt(002102)">  

  
function zeigInhalt(i) {  
alert(i);  
}  

Alert zeigt 1090 ???!?
Was ist da los?

  1. Moin,

    Javascript ist dynamisch typisiert, deshalb denk es 002102 wäre eine Oktalzahl.

    002102 (oct) = 1090 (dec)

    Grüße Marco

    --
    Ich spreche Spaghetticode - fließend.
    1. Moin,

      Javascript ist dynamisch typisiert, deshalb denk es 002102 wäre eine Oktalzahl.

      002102 (oct) = 1090 (dec)

      Grüße Marco

      öööhm- Danke, jetzt klappts :)

    2. Hallo,

      Javascript ist dynamisch typisiert, deshalb denk es 002102 wäre eine Oktalzahl.

      das hat mit dynamischer Typisierung nichts zu tun; dynamische Typisierung bezeichnet vor allem die automatische Umwandlung zwischen Strings und Zahlen je nach Kontext.

      Die Notation von Oktalzahlen mit einer führenden Null ist dagegen eine in vielen Programmiersprachen verbreitete Konvention, die AFAIK ursprünglich von C kommt.

      Ciao,
       Martin

      --
      Lieber blau machen, als sich schwarz ärgern.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. dynamische Typisierung bezeichnet vor allem die automatische Umwandlung zwischen Strings und Zahlen je nach Kontext.

        Nein, das wiederum ist schwache Typisierung. ;)

        Dynamische Typisierung heißt, dass Variablen, Eigenschaften usw. keine festen, zur Compilezeit bekannten Typen haben, sondern zur Laufzeit Werte beliebigen Typs enthalten können. Erst zur Laufzeit wird geprüft, ob z.B. ein Operator mit dem Wert verwendet werden kann oder eine Methode existiert.

        Das geht oft mit schwacher Typisierung einher, aber nicht notwendigerweise. Siehe auch: https://forum.selfhtml.org/?t=217031&m=1490010

        SCNR
        Mathias

  2. Hello,

    <a href="javascript:zeigInhalt(002102)">

    
    >   
    > ~~~javascript
      
    
    > function zeigInhalt(i) {  
    > alert(i);  
    > }  
    > 
    
    

    Alert zeigt 1090 ???!?
    Was ist da los?

    Klickst Du auf Start/Programme/Zubehör/Rechner, schaltest den auf "wissenschaftliche Darstellung" und darin dann bei den Zahlensystemen auf "Okt". dann fügst Du die 002102 dort im Eingabefeld ein und schaltest Um auf "Dez".

    Schont erscheint die Lösung im Eingabefeld :-P

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bikers-lodge.com
  3. Meine Herren!

    Das 002102 die oktale Repräsentation der Dezimalzahl 1090 ist, wurde ja bereits geklärt.

    Wenn es mal darum geht, eine Oktalzahl in einen String umzuwandeln, und das Zahlensystem dabei zu erhalten, kann man Number.prototype.toString( radix ) verwenden.

    Zum Beispiel:

    002102.toString( 8 ) === "2102"; // true

    --
    “All right, then, I'll go to hell.” – Huck Finn