vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbacknächstes Kapitel


Woche 2

Tag 13

Vorgefertigte JavaScript-Funktionen und Top-Level- Eigenschaften

In den letzten Tagen haben wir mehrfach JavaScript-Funktionen erstellt. Zum Teil haben wir damit Funktionalitäten nachprogrammiert, die über die JavaScript-Grundsyntax nicht direkt bereitstehen. Denken Sie beispielsweise an die Fakultätsberechnung oder die Quadratberechnung. Oder die Maßnahmen, die wir durchgeführt haben, damit ein String mit Zahlen darin auch von JavaScript nummerisch behandelt wurde. Mit Hilfe der JavaScript-Operatoren, Variablen und Kontrollstrukturen wurden die Funktionalitäten programmiert und in Funktionen eingebunden bzw. soweit vorbereitet, dass sie nur noch in ein umgebendes Funktionsgerüst eingebunden werden mussten.

Neben diesen von Ihnen selbst geschriebenen Funktionen stellt JavaScript aber eine Reihe von integrierten Funktionen bereit, die Sie an jeder Stelle in einem JavaScript nutzen können und die Ihnen vielfach die Programmierung von Abläufen abnehmen (wozu immer das Rad neu erfinden?). Dabei soll explizit nicht an die objektgebundenen Methoden gedacht werden (diese gibt es natürlich auch noch - sie beinhalten sogar den Großteil der nützlichen JavaScript-Funktionalitäten), sondern an objektunabhängige Funktionen. Wir wollen uns heute diese Funktionen vornehmen und sehen, wie sie in der täglichen JavaScript-Programmierung genutzt werden können. Dabei nutzen einige dieser Funktionen (aber auch viele der später noch behandelten Methoden) so genannte Top-Level- Eigenschaften. Dies sind Werte mit definierter Bedeutung, die an jeder Stelle in einem JavaScript bereitstehen.

Top-Level-Eigenschaften

JavaScript kennt seit der Version 1.3 drei standardisierte Top-Level- Eigenschaften, die in mehreren vorgefertigten Funktionen von JavaScript genutzt werden und auch in selbstdefinierten Funktionen eingesetzt werden können.

Die Eigenschaft undefined werden wir jetzt im Rahmen eines Scripts nutzen, um vor einer kritischen Situation abzufragen, ob überhaupt eine Variable bereits einen Wert zugewiesen bekommen hat. Das Beispiel ist zwar ein wenig konstruiert, aber in größeren Scripten kann es leicht zu solchen Konstellationen kommen, wie wir sie hier simulieren wollen.

Beispiel 1:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a, b;
function ea()
{
a = prompt("Eingabe Variable A","");
}
function eb()
{
b = prompt("Eingabe Variable b","");
}
function rechne()
{
alert(a*b);
}

</SCRIPT>
<BODY>
<BUTTON onClick="ea()">Eingabe Variable A</BUTTON>
<BUTTON onClick="eb()">Eingabe Variable B</BUTTON>
<BUTTON onClick="rechne()">Berechnung</BUTTON>
</BODY>
</HTML>

Speichern Sie das Script unter Undefined.htm und laden Sie es in den Internet Explorer (nur da läuft es - wenn Sie es im Navigator anwenden wollen, müssen Sie ein Formular mit drei Buttons erstellen, dann funktioniert es auch da). Wenn Sie auf den Button zur Eingabe der Variablen a klicken, können Sie in einem Eingabedialog eine Zahl eingeben.

Abbildung 13.1:  Eingabe der  Variablen A

Analog verhält es sich mit der Variablen b. Wenn Sie dann nach Eingabe der beiden Variablen auf den Berechnen-Button klicken, werden die beiden Zahlen multipliziert und dann das Ergebnis ausgegeben.

Abbildung 13.2:  Ergebnis einer erfolgreichen Berechnung

So weit, so gut. Aber was ist, wenn der Anwender die eben beschriebene Reihenfolge nicht einhält? Es ist nun mal zentraler Aspekt einer grafischen Oberfläche, dass eine bestimmte Reihenfolge der Bedienung von Komponenten in der Regel nicht gefordert wird. In unserem Beispiel kann der Anwender ja auch den Berechnen-Button anklicken, bevor die Variablen vollständig eingegeben wurden. Dann gibt es ein Problem (NaN).

Wenn schon nicht die Reihenfolge der Bedienung der Buttons auf der Oberfläche vorgegeben werden kann oder soll, soll unser Script doch soweit optimiert werden, dass die Berechnung nur dann durchgeführt wird, wenn beide Variablen mit Werten belegt wurden (explizites Prüfen auf »nummerisch« soll hier noch nicht geschehen - das machen wir in einem späteren Beispiel). Andernfalls soll eine Meldung auf einen Fehler hinweisen.

Abbildung 13.3:  Ergebnis einer nicht erfolgreichen Berechnung

Beispiel 2:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a, b;
function ea()
{
a = prompt("Eingabe Variable A","");
}
function eb()
{
b = prompt("Eingabe Variable b","");
}
function rechne()
{
if((typeof a) == "undefined")
{
alert(
"Variable A muss vor einer Berechnung gefüllt werden");
}
else if((typeof b) == "undefined")
{
alert(
"Variable B muss vor einer Berechnung gefüllt werden");
}
else
{
alert(a*b);
}
}
</SCRIPT>
<BODY>
<BUTTON onClick="ea()">Eingabe Variable A</BUTTON>
<BUTTON onClick="eb()">Eingabe Variable B</BUTTON>
<BUTTON onClick="rechne()">Berechnung</BUTTON>
</BODY>
</HTML>

Speichern Sie das Script unter TestUndefined.htm und laden Sie es in den Internet Explorer. Wenn Sie nun auf den Berechnen-Button klicken, bevor beiden Variablen ein Wert zugewiesen wurde, wird die Berechnung nicht durchgeführt. Statt dessen erscheint eine Meldung.

Abbildung 13.4:  Meldung beim Fehlen des Werts  der Variablen A

In der Funktion rechne() wird zu der Kontrolle, ob eine Variable bereits einen Wert zugewiesen wurde, auf den typeof-Operator zurückgegriffen. Wenn eine Variable noch keinen Wert hat, liefert er den Wert undefined.

Wir werden die anderen Eigenschaften bei den nachfolgend behandelten Funktionen in der Anwendung sehen.

Konvertierung eines Wertes in eine Zahl

Erinnern Sie sich an unsere Beispiele, wo ein Anwender in einem Eingabeprompt eine Zahl eingegeben und JavaScript diese Zahl als String behandelt hat (beispielsweise an Tag 8 die Beispiele add2.htm oder telefonnr.htm)? Unser Trick, um eine Zahl zu erzwingen, war die Multiplikation mit der Zahl 1. JavaScript konvertiert dann das Ergebnis der Multiplikation automatisch in eine Zahl, ohne den Wert zu verändern. Das ist aber wie gesagt ein Trick, und JavaScript bietet eine eigene Funktion an, die das genauso erledigt.

Die Funktion

Number([Objekt/Ausdruck])

konvertiert den Inhalt eines als Parameter übergebenen Objektes oder eines Ausdrucks in eine Zahl und gibt die Zahl zurück.

Beispiel 3:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a;
var b;
a = Number(
prompt("Geben Sie die erste Zahl ein",""));
b = Number(
prompt("Geben Sie die zweite Zahl",""));
document.write(
"Das Ergebnis von ", a, " + ", b, " ist : ");
document.write(a + b);
document.write("<br>");
</SCRIPT>
<BODY>
</BODY>
</HTML>

Speichern Sie das Script unter add.htm und laden Sie es in einen Browser. Geben Sie in den beiden Eingabemasken jeweils eine Zahl ein. In der Number()-Funktion wird direkt die prompt()-Funktion (oder genauer - Methode) notiert. Der Rückgabewert als String wird vor der Zuweisung zu der Variablen konvertiert, sodass die Addition der beiden Variablen nummerisch erfolgt.

Wenn sich in der Number()-Funktion das übergebene Objekt nicht umwandeln lässt, wird ein definierter Wert NaN (Not a Number) zurückgegeben. Wenn Sie also in dem Beispiel keine Zahlen eingeben, wird dieser Wert zurückgeliefert.

Abbildung 13.5:  Keine nummerischen  Eingabewerte

Dieser Wert NaN kann gezielt verwendet werden. Etwa um damit im Rahmen einer Bedingung in einer Kontrollflussanweisung sinnvoll zu reagieren. Dazu gibt es eine weitere wichtige Funktion:

isNaN([Ausdruck]) 

Diese Funktion prüft den übergebenen Wert, ob er ein nichtnummerischer Wert ist (Rückgabe true) oder nicht (false). In JavaScript 1.0 wurde die Funktion nur unter Unix unterstützt, seit JavaScript 1.1 gibt es sie auf allen Plattformen.

Wenn wir uns nun unser Beispiel ansehen, könnte diese Funktion auf verschiedenste Weise ausgenutzt werden. Etwa dass eine qualifizierte Fehlermeldung ausgegeben wird. Oder es wird je nach Typ des eingegebenen Werts eine nummerische Addition oder eine String-Addition ausgeführt. Wir wollen uns für eine dritte Möglichkeit entscheiden - der Anwender wird nach der Eingabe eines Strings gezwungen, seine Eingabe zu korrigieren. Andernfalls wird das Script nicht weiter ausgeführt.

Beispiel 4:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a;
var b;
do
{
a = Number(prompt("Geben Sie die erste Zahl ein",""));
if(isNaN(a)) alert(
"Sie dürfen hier nur nummerische Werte eingeben");
}
while(isNaN(a));
do
{
b = Number(prompt("Geben Sie die zweite Zahl",""));
if(isNaN(b)) alert(
"Sie dürfen hier nur nummerische Werte eingeben");
}
while(isNaN(b));
document.write(
"Das Ergebnis von ", a, " + ", b, " ist : ");
document.write(a + b);
document.write("<br>");
</SCRIPT>
<BODY>
</BODY>
</HTML>

Speichern Sie das Script unter NaN.htm und laden Sie es in einen Browser. Testen Sie unseren Sicherheitsmechanismus mit der do-while-Schleifen, indem Sie in den beiden Eingabemasken keine Zahl eingeben. Sowohl in der Abbruchbedingung der Schleife als auch in der if-Abfrage wird die Funktion isNaN() genutzt, um für den Fall einer nichtnummerischen Eingabe den boolschen Wert true zurückgeben zu lassen.

Abbildung 13.6:  Zweimal leere Eingabe

Das Beispiel erzeugt keine Endlos-Schleife wie viele vergleichbare Konstruktionen, wo der Anwender nicht mehr aus der Eingabemaske heraus kann. Sowohl die Eingabe »leer« als auch die Betätigung der Abbrechen-Schaltfläche wird einen Leerwert erzeugen, der in 0 umgewandelt werden kann. Damit ist die Bedingung erfüllt. Für den Fall, dass sie einen nummerischen Wert ungleich 0 benötigt (etwa bei einer Division), muss man zusätzliche Schritte unternehmen. Etwa zusätzlich auf ungleich 0 prüfen oder so.

Abbildung 13.7:  Die Fehlermeldung

Wir wollen das Beispiel noch in Hinsicht auf eine effektivere Programmierung optimieren. Es bietet sich an, die Eingabe samt Kontrolle des Typs der Eingabe in eine eigene Funktion auszulagern und mit Übergabe- und Rückgabewerten zu arbeiten.

Beispiel 5:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a, b;
function typTest(text)
{
do
{
wert = Number(
prompt("Geben Sie die "+ text +" Zahl ein",""));
if(isNaN(wert))
alert("Sie dürfen hier nur nummerische Werte eingeben");
}
while(isNaN(wert));
return wert;
}
a=typTest("erste");
b=typTest("zweite");
document.write(
"Das Ergebnis von ", a, " + ", b, " ist : ");
document.write(a + b);
document.write("<br>");
</SCRIPT>
<BODY>
</BODY>
</HTML>

Speichern Sie das Script unter NaN2.htm und laden Sie es in einen Browser. Beachten Sie den Aufbau der Funktion. Als Übergabewert wird ein Text übergeben, um damit eine individuelle Fehlermeldung aufzubauen. Der Rückgabewert wird dann den Variablen zugewiesen.

Der folgende Vergleich wird nicht funktionieren:

if(a==NaN)

Man muss für Vergleich auf NaN zwingend auf die Funktion isNaN() zurückgreifen.

In den gleichen Zusammenhang wie Number() sind auch die Funktionen
eval([Zeichenkette]), parseFloat([Zeichenkette]) und parseInt([Zeichenkette])
zu setzen:

Um die Unterschiede zu Number() zu sehen, testen wir die Funktionen in Beispielen.

Beispiel 6:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a;
a = Number("4+5");
b = eval("4+5");
document.write("Der Wert von a ist : ", a);
document.write("<br>");
document.write("Der Wert von b ist : ", b);
document.write("<br>");
</SCRIPT>
<BODY>
</BODY>
</HTML>

Abbildung 13.8:  Einmal wird die Berechnung ausgeführt, das andere Mal nicht

Speichern Sie das Script unter Eval.htm und laden Sie es in einen Browser. Number() liefert bei einer Zeichenkette, in der eine Berechnung stattfindet, NaN, eval() führt die Berechnung aus und liefert eine Zahl zurück.

Die Funktion eval() sollte nicht zum Ausführen eines arithmetischen Ausdrucks verwendet werden (also, wenn der Ausdruck nicht als String oder sonst wie missverstanden werden kann). Diese werden in JavaScript automatisch ausgeführt.

Beispiel 7:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
a = Number(4.1234);
b = parseInt(4.1234);
c = Number("4.1234");
d = parseFloat("4.1234");
e = Number("4.1234%");
f = parseFloat("4.1234%");
g = parseInt("4.1234 und eine Menge Text");

document.write("Der Wert von a ist : ", a);
document.write("<br>");
document.write("Der Wert von b ist : ", b);
document.write("<br>");
document.write("Der Wert von c ist : ", c);
document.write("<br>");
document.write("Der Wert von d ist : ", d);
document.write("<br>");
document.write("Der Wert von e ist : ", e);
document.write("<br>");
document.write("Der Wert von f ist : ", f);
document.write("<br>");
document.write("Der Wert von g ist : ", g);
document.write("<br>");
</SCRIPT>
<BODY>
</BODY>
</HTML>

Abbildung 13.9:  Die verschiedenen Wirkungen von Number() und parseFloat() bzw. parseInt()

Speichern Sie das Script unter Parse.htm und laden Sie es in einen Browser. Beachten Sie, wie parseFloat() und parseInt() wirken.

Es gibt noch eine ganz interessante Erweiterung von parseInt(). Als zweiten Parameter kann man eine Basis angeben. Das ist ein Wert zwischen 2 und 36. Schauen wir uns an, wie er wirkt.

Beispiel 8:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
for(i=2;i<=10;i++)
{
document.write("Basis : " , i , ": ");
document.write(parseInt("4abc",i));
document.write(" ");
document.write(parseInt("5",i));
document.write(" ");
document.write(parseInt("6c",i));
document.write(" ");
document.write(parseInt("7ddd",i));
document.write("<br>");
}
for(i=11;i<=36;i++)
{
document.write("Basis : " , i , ": ");
document.write(parseInt("a",i));
document.write(" ");
document.write(parseInt("b",i));
document.write(" ");
document.write(parseInt("c",i));
document.write(" ");
document.write(parseInt("d",i));
document.write(" ");
document.write(parseInt("e",i));
document.write(" ");
document.write(parseInt("f",i));
document.write(" ");
document.write(parseInt("g",i));
document.write("<br>");
}
</SCRIPT>
<BODY>
</BODY>
</HTML>

Abbildung 13.10:  Die Wirkung von parseInt() mit Basis

Speichern Sie das Script unter parse2.htm und laden Sie es in einen Browser. Die Angabe der Basis bedeutet das Festlegen einer Basis für die Zahlendarstellung. Wenn die Basis kleiner als die Zahl ist, wird NaN zurückgegeben. Ist die Basis größer als 10, werden Buchstaben nummerisch dargestellt. Die Basis 10 steht für dezimal, 8 für oktal oder 16 für hexadezimal. Wenn die Basis nicht angegeben wird, gelten die Regeln, dass der Anfang eines Zeichens mit 0x für hexadezimal und der Beginn mit 0 für oktal steht. Alle anderen Zahlen stehen für dezimal. Das Verhalten ist sehr leistungsfähig, jedoch recht komplex.

Textausgabe von Werten

Eine der wichtigsten Situationen im Ablauf eines Scripts ist der Fall, dass man ein Objekt vorliegen hat und Informationen benötigt, die darin enthalten sind. Um diese in eine Zeichenkette zu extrahieren, gibt es in JavaScript die Funktion String()1. Diese konvertiert den Inhalt eines als Parameter übergebenen Objekts in eine Zeichenkette und gibt diese zurück.

Viele Anwendungen unter JavaScript beruhen darauf, dass Informationen in Form von Strings zur Verfügung stehen. Sei es die Ausgabe in der Webseite, sei es die Ausgabe in einem Dialogfenster. Objekte beinhalten oft Informationen nur verschlüsselt oder indirekt. Die Funktion String() extrahiert den Teil der Informationen, die man in einer Zeichenkette darstellen kann.

Die Bedeutung der Funktion sollte jedoch nicht überschätzt werden. Zum einen stellen einige Objekte keine sonderlich aussagekräftigen Informationen bereit, zum anderen kann man vielfach auf die Funktion verzichten und das Objekt selbst in eine andere Funktion oder Methode notieren, die dann den String automatisch extrahiert. Darüber hinaus stellen Objekte meist eine eigene Methode bereit (toString()), die eine analoge Aufgabe verfolgt.

Beispiel 9:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var heute = new Date();
document.write(String(heute));
document.write("<br>");
</SCRIPT>
<BODY>
</BODY>
</HTML>

Abbildung 13.11:  String-Ausgabe des Datum-Objekts

Speichern Sie das Script unter String.htm und laden Sie es in einen Browser.

Kodieren und Dekodieren von Zeichenketten

Es gibt im Rahmen von verschiedenen Webvorgängen Situationen, wo die direkte Verwendung von gewissen Sonderzeichen nicht gestattet ist (dazu zählen auch das Leerzeichen und deutsche Umlaute). Etwa allgemein in URLs oder bei CGI-Prozessen. Will man sie dennoch verwenden, müssen sie maskiert, dass heißt kodiert, werden. Überall, wo ein solches kritisches Zeichen vorkommen soll, wird das entsprechende Zeichen kodiert. Diese Kodierung erfolgt über ein vorangestelltes Prozentzeichen, gefolgt von einer hexadezimalen Angabe der Kodierung des ASCII-Zeichenwerts von dem Zeichen.

Statt dies manuell durchzuführen, gibt es die Funktion

escape([Zeichenkette]), 

womit alle Zeichen der übergebenen Zeichenkette in ihre ASCII- Zahlenwerte umgewandelt werden (mit vorangestelltem Trennzeichen %) und die so erzeugte Zeichenkette zurückgegeben wird (als Zeichen des ISO- Latin-1-Zeichensatzes). Ausnahmen sind die Zeichen * @ - _ + . /. Implementiert ist die Funktion bereits seit JavaScript 1.0 und mit Ausnahme von Unicode-Zeichen ECMA-262-kompatibel. Unicode-Zeichen werden statt dessen entsprechend der Internet-Engineering-Task-Force- Richtlinien (IETF) für Escape-Zeichen behandelt. Spezielle Unicode- spezifizierte Escape-Sequenzen der Form %uXXXX werden nicht unterstützt.

Das Gegenstück zu escape() ist die Funktion

unescape([Zeichenkette]). 

Die Funktion wandelt alle Zeichen einer übergebenen, kodierten Zeichenkette in normale ASCII-Zeichen um und gibt die lesbare Zeichenkette zurück. Die Zeichenkette muss für jedes umzuwandelnde Zeichen ein Prozentzeichen (%) und den Hexadezimalwert des Zeichens in der ASCII-Zeichentabelle in der Form %xx enthalten, wobei xx eine zweistellige Hexadezimalzahl ist.

Beispiel 10:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a =
"Kennen Sie den kürzesten Mathematikerwitz? Epsilon < 0";
var b = escape(a);
document.write(b);
document.write("<P>");
document.write(unescape(b))
</SCRIPT>
<BODY>
</BODY>
</HTML>

Abbildung 13.12:  Ausgabe erst kodiert und dann wieder dekodiert

Speichern Sie die Datei unter Escape.htm und laden Sie diese in einen Browser. Das Beispiel kodiert zuerst eine Zeichenkette und dekodiert diese danach wieder. So ist das Beispiel zwar wenig sinnvoll, aber wenn der Kodierungsvorgang beispielsweise auf einem Client stattfindet, die Information dann per Internet verschickt und anschließend auf dem Server dekodiert wird, haben wir eine hochgradig sinnvolle Anwendung. (Das ist ein Teil des Prinzips, auf dem CGI basiert.)

Test auf Unendlichkeit

Eine interessante und seit JavaScript 1.3 implementierte Funktion ist isFinite().

Diese evaluiert ein Argument, um zu bestimmen, ob es eine endliche Zahl ist. Syntax:

isFinite([Zahl])

Wenn das Argument NaN, »positiv unendlich« oder »negativ unendlich« ist, wird false, andernfalls true zurückgegeben. Diese Funktion macht insbesondere Sinn für solche Situationen, wo der definierte Wert Infinity entstehen kann. Etwa bei einer Division durch den Wert 0.

Nehmen wir unserer Beispiel 4 und machen daraus die Division von zwei Zahlen, welche der Anwender eingibt. Wenn der Divisor 0 ist, wird die Division Infinity erzeugen. Dies kann man mit der Funktion isFinite()abfangen und eine Meldung generieren.

Beispiel 11:

Geben Sie folgenden Quelltext ein:

<HTML>
<SCRIPT language="JavaScript">
var a, b;
function typTest(text)
{
do
{
wert = Number(prompt(
"Geben Sie die "+ text +" Zahl ein",""));
if(isNaN(wert)) alert(
"Sie dürfen hier nur nummerische Werte eingeben");
}
while(isNaN(wert));
return wert;
}
a=typTest("erste");
b=typTest("zweite");
if(!isFinite(a/b))
{
alert(
"Nix gegen Unendlichkeit, aber hier wollen wir sinnvolle Werte haben.");
}
else
{
document.write(
"Das Ergebnis von ", a, " geteilt durch ", b,
" ist : ");
document.write(a / b);
document.write("<br>");
}
</SCRIPT>
<BODY>
</BODY>
</HTML>

Abbildung 13.13:  Fehlermeldung im Fall  von Unendlich

Speichern Sie die Datei unter IsInf.htm und laden Sie diese in einen Browser. Die if-Bedingung prüft den Rückgabewert der Division mit isFinite(). Beachten Sie den Negationsoperator ! vor dem Bezeichner.

Schutzmaßnahmen

Am Rande von Interesse sind die beiden Funktionen

taint()

und

untaint().

Sie wurden in JavaScript 1.1 eingeführt, um Datenelemente oder Scripte vor Zugriffen durch fremde Scripte verstecken zu können. taint([dataElementName]) versteckt das Datenelement, untaint() entfernt den Zugriffsschutz, der mit taint() gesetzt wurde. Hört sich ganz nützlich an, hat aber nicht gehalten, was man sich davon versprach. Beide Funktion wurden in JavaScript 1.2 wieder entfernt.

Zusammenfassung

Wir haben heute in JavaScript integrierte Top-Level-Eigenschaften und Funktionen kennengelernt. Obwohl es nicht allzu viele sind, ist deren Nutzen enorm. Viele Situationen, in denen Sie sich sonst mühsam eine eigene Lösung zusammenstricken müssten, werden von diesen Funktionen und Eigenschaften bereits abgedeckt. Insbesondere Fälle, in denen kritische Situationen auftreten können (Datentyp-Probleme, Endlichkeitsprobleme oder Kodierungsangelegenheiten), werden damit ziemlich vollständig zu behandeln sein.

Fragen und Antworten

Frage:
Gibt es noch weitere JavaScript-Funktionen?

Antwort:
Ja. In JavaScript 1.3 gibt es noch die speziell für die Zusammenarbeit von JavaScript mit Java eingeführte Funktion getClass(). Diese ist aber in einem etwas anderen Zusammenhang wie die anderen Funktionen zu sehen. Ansonsten ist die Auflistung der Funktionen aber vollständig. Die geringe Anzahl von vorgefertigten Funktionen in JavaScript liegt daran, dass die meiste Funktionalität in Form von Objekten und ihren zugehörigen Methoden bereitgestellt wird. Diese bekommen wir in der dritten Woche.

Frage:
Gibt es noch weitere Top-Level-Eigenschaften in JavaScript 1.3?

Antwort:
Nein, nur die drei hier besprochenen.

Workshop

Schauen Sie sich noch einmal das Beispiel 1 an und erstellen Sie eine im Netscape Navigator lauffähige Version.

Nehmen Sie sich das Beispiel 3 vor und erstellen Sie unter Ausnutzung von isNaN() eine qualifizierte Fehlermeldung in der Webseite für den Fall, dass die Multiplikation scheitert. Ansonsten soll die Ausgabe wie bisher funktionieren. Realisieren Sie auch den zweiten Vorschlag - je nach Typ des eingegebenen Werts wird eine nummerische Addition oder eine String- Addition ausgeführt.

Kontrollfragen

Im Anhang »Antworten zu den Kontrollfragen« finden Sie die Antworten zu den jeweils am Ende einer Lektion notierten Fragen.

  1. Was macht isInfinite()?
  2. Funktioniert das?
    if(a==NaN)
  3. Funktioniert das?
    if(a=="undefined")
  4. Was liefert parseInt(45.678)?
  5. Was liefert parseInt(DM 45.67)?
  6. Was liefert parseFloat(45.67 DM)?
  7. Funktioniert das?
    if(a==undefined)
  8. Funktioniert das?
    if((typeof a) == undefined)



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisFeedbackKapitelanfangnächstes Kapitel


1

© Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH