seltsames Verhalten einer Variablen
otto der viertel vor zwölfte
- javascript
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?
Moin,
Javascript ist dynamisch typisiert, deshalb denk es 002102 wäre eine Oktalzahl.
002102 (oct) = 1090 (dec)
Grüße Marco
Moin,
Javascript ist dynamisch typisiert, deshalb denk es 002102 wäre eine Oktalzahl.
002102 (oct) = 1090 (dec)
Grüße Marco
öööhm- Danke, jetzt klappts :)
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
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
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
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