Tach!
Bitte nur das zitieren, worauf du dich konkret beziehst, nicht immer das gesamte Vorposting.
Also die Sache ist die. Ich will überprüfen ob ein 5. (>von 0 an gezählt<) oder mehr Argumente angehängt wurden da diese für zusätzliche Bearbeitungen nur hin und wieder benötigt werden. Deswegen habe ich sie flexibel gelassen.
Das 4. Argument ist ja beim Aufruf gegeben und muss deshalb ja nicht auf seine Existenz geprüft werden... ;)
Ich würde die Parameter alle einzeln benennen, wenn sie nicht von ihrer Bedeutung her ein Array bilden. Ihre Existenz kann dann mit
/**
* Beschreibung der Funktion
* Programmdokumentation ist wichtig, am besten im [link:http://usejsdoc.org/index.html@title=JSDoc-Format]
*
* @param {string} foo Beschreibung von foo
* @param {string} [bar] Beschreibung des optionalen Parameters bar
*/
function foo(bar, qux) {
if (qux != undefined)
console.log('qux übergeben:', qux);
else
console.log('nur foo vorhanden, foo);
foo('baz');
geprüft werden. Wenn null ein gültiger Inhalt ist, der von undefined unterschieden werden muss (oder wenn es nach Douglas Crockford geht), muss mit !== typsicher verglichen werden. null ist sonst gleich undefined, alle anderen Typen nicht.
Jedoch steht die Frage noch offen warum er bei 4 (>von 0 an gezählt<) angegebenen Argumenten bei der Abfrage arguments.length den Wert 5 auswirft obwohl nur 4 Argumente angegeben wurden...
Wenn du 1 Element an der Indexposition 0 hast, wieviele sind das dann? Nicht 0 sondern 1. length gibt die Anzahl an, nicht den Maximalwert. Wenn du 2 Elemente an den Positionen 0 und 1 hast, wieviele sind das dann? ... Wenn du 5 Elemente an den Positionen 0, 1, 2, 3 und 4 hast, wieviele sind das dann?
dedlfix.