Maurice: Problem mit Typenermittlung

Beitrag lesen

Hallo Gast,

DAS ist natürlich völlig quatsch

wäre schön gewesen, wenn Du das etwas spezifiziert hättest. SO ist Deine Aussage "natürlich völlig quatsch", weil damit keiner was anfangen kann, wenn er es mal im Archiv finden sollte.

Grundsätzlich gebe ich Dir aber recht, da ist ein bedeutender Fehler drin. Das kommt halt davon, wenn man zwischen Tür und Angel ohne nachzudenken einfach irgendwas per copy-paste übernimmt. Ich gelobe Besserung.

Eine gute Erklärung hat Mitleser ja schon gegeben. Darin hat Mitleser eigentlich auch schon den Fehler hier drin beschrieben.

Aber der Vollständigkeit halber: Hier

if (arguments.length >= 5 && arguments[4] != undefined) {
    /* ... */
}


>   
> wird fälschlicherweise geprüft, ob die Variable arguments[4] und die Variable mit dem \_Namen\_ "undefined" einen ungleichen \_Wert\_ haben. Richtig wäre aber eine Überprüfung, ob die Variable arguments[4] von einem \_Typ\_ ungleich "undefined" ist, also z.B. so:  
>   
> ~~~javascript
  

> if (arguments.length >= 5 && typeof arguments[4] !== "undefined") {  
>     /* ... */  
> }  
> 

Unabhängig davon ist aber, dass JavaScript bei einem Array mit dem Index 0 zu zählen beginnt.

So, genug geschrieben. Nächstes Mal wird's hoffentlich wieder besser mit meinen Antworten.

Gruß
und-für-den-T-Rex-noch-irgendein-quatsch-hinter-Gruß
Dennis

Soooo bevor hier streit ausbricht :D das Problem ist gelöst. (mehr oder weniger)
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... ;)
Mit der Überprüfung von typeof arguments[5] != 'undefined' (mit Anführungsstrichen) wird es jetzt korrekt kontrolliert. Vielen Dank dafür.
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...