• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

"Konstanten" in js

Status
Für weitere Antworten geschlossen.

Javageek321

Neues Mitglied
Hallo, zu folgendem Schnipsel eine Frage:

Code:
Math.PI = 1;
document.writeln(Math.PI);
Infinity = 3;
document.writeln(Infinity);
Ausgabe bei mir (Firefox 3.0.10):
3.141592653589793 3

Warum wird die "Konstante" PI nicht überschrieben, Infinity aber schon ?

Danke und Gruß
JG
 
Zuletzt bearbeitet:
1. Weil Infinity eine von Dir definierte Variable ist, die Du überschreiben kannst, wie Du willst.
2. Ich würde vermuten, dass es das tut, aber das siehst Du natürlich nur im Quelltext (\n), weil Newlines in der Browser-Ansicht in ein Leerzeichen umgewandelt wird.
 
Hallo,
danke erstmal. Die zweite Frage hatte ich gelöscht weil es sich erledigt hatte, du warst ja sehr schnell ;)

zum anderen Punkt: das Argument verstehe ich nicht.

aus dem SelfHTML-Buch:

Code:
<script type="text/javascript">
var Zahl = Number.MAX_VALUE * 2;
alert(Zahl);

var Monat = 13;
if (Monat > 12)
  Monat = Number.POSITIVE_INFINITY;
alert(Monat);
</script>
die Ausgabe des ersten Alert ist "Infinity". Also müsste "Infinity" irgendwo anders bereits definiert sein. Dafür spricht auch dass IntelliSense "Infinity" als member auflistet ohne dass es irgendwo von mir definiert wurde (also auch ohne die Zeile "Infinity = 3;")

JavaScript infinity Property
JavaScript Math Object

laut diesen Seiten sind sowohl "Infinity" als auch "Math.Pi" Properties.
 
Ich sehe auf den von Dir verlinkten Seiten keinen Hinweis auf eine globale Variable oder Konstante mit Namen "Infinity". Da steht nur, dass "Infinity" ausgegeben wird, wenn es einen Überlauf gibt, wenn die Zahl zu hoch ist.

In Deinem Codeschnipsel jedoch definierst Du mit "Infinity = 3" eine Variable mit Wert 3.
 
JavaScript Top-level Properties and Functions

The top-level properties and functions can be used on all of the built-in JavaScript objects.
Our complete Top-level reference describes the properties and functions that can be used with all the JavaScript objects, along with examples.


http://www.w3schools.com/jsref/jsref_obj_global.asp

Top-level Properties

Property Description FF IE Infinity A numeric value that represents positive or negative infinity
 
Keine Ahnung. Ich kannte "Infinity" vorher noch nicht.
Aber um nochmal zum Anfang zurück zu kommen: Warum willst Du Infinity überhaupt überschreiben?
 
Erstmal; es gibt eigentlich keine Konstanten in ECMAScript 3. In ECMAScript 5 ist es drin und Gecko z.B. als Mozilla-Extension: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/const

Im Objekt Math ist PI eine statische Eigenschaft. Also ungefähr so:
Code:
var MyMath = {};
MyMath.PI = 3.141592653589793;
alert(MyMath.PI);
Nicht viel anders ist es mit Infinity. Diese Eigenschaft gehört direkt zum Globalen Namespace (Window-Objekt).

Scheinbar achtet die Engine darauf, dass man Math.PI nicht überschreiben kann (evtl. wirklich als Konstante abgelegt). Infinity hingegen nicht. Ich weiß nicht, ob die Spezifikation das so vor gibt und ob das in jedem Browser so ist. Findet sich evtl. irgendwo hier: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf Das lässt sich auch nicht durch ein Spachkonstrukt darstellen.

Zu Infinity und Number.POSITIVE_INFINITY steht auf DevMo:
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Properties/Infinity schrieb:
The initial value of Infinity is Number.POSITIVE_INFINITY. The value Infinity (positive infinity) is greater than any other number including itself. This value behaves mathematically like infinity; for example, anything multiplied by Infinity is Infinity, and anything divided by Infinity is 0.
Also so:
Code:
Window.prototype.Infinity = Number.Infinity;

Number.MAX_VALUE gibt dir die Zahl zurück, welche du maximal erzeugen kannst. Sie unterscheidet sich auf 32 und 64 Bit-Systemen. Wenn du diese Zahl mal zwei nimmst, wird das Ergebnis also unendlich sein, weil es eben keine größere Zahl als MAX_VALUE geben kann.
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben