Beispiele: Parameter in JavaScript
Parameter sind ein wichtiger Bestandteil von JavaScript - doch sie können mehr als einfach nur Werte übergeben.Variable Parameterlisten
In JavaScript - als einer 'nicht typisierten' Sprache - braucht sich der Benutzer normalerweise nicht um die Parameter einer Funktion zu kümmern, sie sind einfach durch ihre Position in der Parameterliste bestimmt. Doch bei höheren Ansprüchen werden die Grenzen dieser Freiheit sehr bald spürbar. In dieser Serie erfahren Sie, wie man sie überwinden kann.JavaScript ist eine "nicht typisierte Sprache" - im Gegensatz etwa zu "streng typisierten Sprachen", wie C oder C++, wo jede Variable vor ihrem ersten Gebrauch mit einem gewissen Datentyp deklariert werden muss und fortan nur mehr mit genau diesem Typ verwendet werden kann. Vorteile hat das bei größeren Programmen mit einer Vielzahl von Variablen, die der Mensch leicht verwechseln kann. Da ist es ganz gut, wenn der Compiler gleich jede Verwechslung als fehlerhaft markiert.
In JavaScript jedoch gibt es keinen Compiler, sie ist eine "Interpretersprache". Der Interpreter ist in vielen Browsern gleich eingebaut, jedoch in sehr verschiedenem Umfang. Das volle JavaScript ist nur im Microsoft Internet Explorer (MS-IE) verfügbar, der heute allerdings einen Marktanteil von 86% hat. Wenn Sie JavaScript -Programme schreiben, die auf verschiedenen Browsern funktionieren sollen, dann sollten Sie diese unbedingt mit allen diesen testen, bevor Sie sie ins Internet hochladen.
Ein häufiges Problem ist es, eine Funktion mit einer variablen Zahl von Parametern zu schreiben. (Ist doch eigentlich absurd, nicht wahr? Die Bedeutung eines Parameters ergibt sich aus seiner Position - diese aber ist variabel?)
Nun, JavaScript ist so universell, dass auch dieser scheinbare Widerspruch gelöst wurde: Die Bedeutung eines Parameters ergibt sich weiterhin aus seiner Position, allerdings gibt es dafür keine obere Grenze. Eine Funktion wird zwar nur mit einer gewissen Zahl von Parametern deklariert, doch kann sie mit einer beliebigen Zahl aufgerufen werden.
So bedeutet etwa die Deklaratin:
function xyz(param)
konzeptionell eigentlich
function xyz(param,...)
Intern erfolgt der Zugriff auf einen Parameter nicht über seinen Namen, sondern er wird einfach wie ein Feld in einem Array verwendet. Dieses Array heißt in JavaScript
arguments
und bildet einen Teil der Funktions-Deklaration - muss also mit dem Namen der jeweiligen Funktion qualifiziert werden. Dann kann der i-te Parameter zugegriffen werden mit xyz.arguments[i]
.Zu jedem Array gibt es in JavaScript in Attribut
length
. Da ja die Länge der Parameterliste bei der Funktions- Deklaration noch nicht bekannt ist, braucht man dieses Attribut, wie Sie in folgendem Beispiel sehen.Für dieses Beispiel wurde angenommen, gewünscht sei eine Funktion, die einfach die Summe einer beliebigen Zahl von Parametern berechnet. Ihre Deklaration könnte so aussehen:
function Summe(param)
{
var i, sum = 0;
for(i=0; i < Summe.arguments.length; i++)
sum += Summe.arguments[i];
return sum;
}
Unterschiedliche Verwendung von Parametern
In JavaScript -Funktionen sind die Parameter durch ihre Position in der Parameterliste festgelegt - sollte man meinen. Mit demtypeof()
-Operator aber kann man einen Parameter ganz unterschiedlich behandeln, je nachdem wie er beim Aufruf der Funktion übergeben wurde.Ein häufiges Problem bei Aufruf von JavaScript -Funktionen ist, dass der Mensch dazu neigt, ein Detail geistig auszublenden, wenn es im Moment keine Rolle spielt. Der JavaScript -Interpreter im Browser aber nimmt das ganz genau: wenn ein Parameter "leer" ist, dann soll zumindest
0
, ""
(leerer String) oder undefined
für ihn eingesetzt werden.Für die Programmier-Produktivität ist es deshalb besser, einen Parameter vor der eigentlichen Verarbeitung zuerst mit
typeof()
zu untersuchen. Je nach dem Ausgang wurde dieser Parameter beim Aufruf als number
, string
, boolean
, object
, function
oder undefined
übergeben und sollte entsprechend behandelt werden.Versuchen Sie mal, die folgende Beispiel-Funktion mit verschiedenen Parametern aufzurufen:
function Test(param)
{
switch(typeof(param))
{
case 'number': alert('param = '+param+' (Typ: number)');
break;
case 'string': alert('param = '+param+' (Typ: string)');
break;
case 'boolean': alert('param = '+param+' (Typ: boolean)');
break;
case 'object': alert('param = '+param+' (Typ: object)');
break;
case 'function': alert('param = '+param+' (Typ: function)');
break;
case 'undefined': alert('param = '+param+' (Typ: undefined)');
break;
}
}
object
werden Sie erst mal in HTML ein Objekt erzeugen und mit dessen Identifier dann diese Funktion aufrufen müssen, zum Beispiel:
<BR id="x">
<SCRIPT>Test(x)</SCRIPT>
function xyz(... ... ... ,options, debug)
{
...
}
options
ist, falls gebraucht, ein string
(womit einige Feinheiten der Verarbeitung gesteuert werden). Wie der Name schon sagt, ist er "optional" - das heißt, er wird nicht in jedem Fall gebraucht.Parameter
debug
ist eine number
, die den Feinheitsgrad der Zwischenausgaben während der Software-Entwicklung steuert - im produktiven Einsatz jedoch nie gebraucht wird.Was macht nun der Programmierer während der Software-Entwicklung, wenn er eine solche Funktion debuggen will, jedoch ohne
options
? - Er ruft sie ganz einfach mit einem numerischen Parameter am Ende der Parameterliste auf und kümmert sich gar nicht um die options
- zum Beispiel:
function xyz(... ... ... , 1)
Denn er weiß, dass diese Funktion folgendermaßen deklariert wurde:function xyz(... ... ...,options, debug)
{
if(typeof(options) == 'number')
{
debug = options; options = undefined;
}
...
}
Parameter in Form von JavaScript-Code
"Eine JavaScript -Funktion legt den Algorithmus zur Verarbeitung der Parameter eindeutig fest" - aber nur bei relativ einfachen Anwendungen. Man kann einen Parameter auch als string übergeben, der "zufällig" genau einem JavaScript -Code entspricht. Intern wird dieser Code dann ausgewertet und ggf. ausgeführt - dank der Methodeeval()
.Beim Aufruf einer JavaScript -Funktion kann es sein, dass der Anwender eine Aktion wünscht, abhängig von einer Bedingung. Diese Bedingung wird vernünftigerweise so formatiert sein, wie man das auch in JavaScript ausdrücken würde.
Dann kann diese Bedingung mittels der Methode
eval()
ausgewertet werden, wie Sie in folgendem Beispiel sehen:
function Auswerten(cond,x)
{
if(eval(cond))
alert("x (= "+x+") erfüllt Bedingung '"+cond);
else
alert("x (= "+x+") erfüllt Bedingung '"+cond+" nicht");
}
Auswerten("x > 5",6);
Auswerten("x > 5",3);
eval()
ist ein enorm vielseitiges Werkzeug. Man kann damit nicht nur einen String auswerten (wenn er "zufällig" der JavaScript -Notation entspricht), sondern auch einen JavaScript -String ausführen. Zum Beispiel könnte man in die Funktion des obigen Beispiels noch zwei weitere Parameter einführen, die angeben, was in dem einen und was im anderen Fall geschehen soll:
function Auswerten(cond,x,operation1,operation2)
{
if(eval(cond))
eval(operation1);
else
eval(operation2);
}
Auswerten("x > 5",3,"alert('x = '+x+' - Bedingung erfüllt')",
"alert('x = '+x+' - Bedingung nicht erfüllt')");
Auswerten("x > 5",6,"alert('x = '+x+' - Bedingung erfüllt')",
"alert('x = '+x+' - Bedingung nicht erfüllt')");
Auswerten("x > 5",6,"alert('x = '+x+' - Bedingung erfüllt')");
Auswerten("x > 5",3,"alert('x = '+x+' - Bedingung erfüllt')");
Auswerten("x > 5",7,"alert('x = '+x+' - Bedingung erfüllt')");
operation2
intern undefined
, wird also nicht ausgeführt. Erst beim dritten Aufruf kommt wieder eine alert
-Box auf den Bildschirm.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project