Funktion mit falschen Parametern
der_micha
- javascript
0 dave0 Gunnar Bittersmann
1 molily
Hallo zusammen,
kann mir jemand sagen, in welcher Spec steht, was ein Browser machen soll, wenn eine Funktion mit falschen Parametern aufgerufen wird. Das kann sowohl der Typ als auch die Anzahl sein.
Beispiele:
eval(5) => Falscher Parametertyp
eval("functionA()", "functionB()") => falsche Anzahl
Wäre super, wenn mir jemand helfen könnte
Hi,
kann mir jemand sagen, in welcher Spec steht, was ein Browser machen soll, wenn eine Funktion mit falschen Parametern aufgerufen wird. Das kann sowohl der Typ als auch die Anzahl sein.
Man kann keine Funktion mit "falschen Parametern" aufrufen.
Javascript ist (fast) typlos und es werden einfach alle Parameter übergeben, fehlende sind dann eben undefined.
Beispiele:
eval(5) => Falscher Parametertyp
eval("functionA()", "functionB()") => falsche Anzahl
Warum sollte der Parametertyp falsch sein?
Was stört eval wenn zusätzliche Parameter übergeben wurden?
> Wäre super, wenn mir jemand helfen könnte
Ich hab noch nie die Javascript Spec gelesen, aber ich glaub was du suchst dürfte [hier Punkt 11.2.3](http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf) sein?
~dave
@@der_micha:
nuqneH
kann mir jemand sagen, in welcher Spec steht, was ein Browser machen soll, wenn eine Funktion mit falschen Parametern aufgerufen wird.
Wo, wenn nicht in der ECMAScript-Spezifikation? [ECMA-262] §13.2.1, §10.4.3., §10.5
Qapla'
Hallo,
kann mir jemand sagen, in welcher Spec steht, was ein Browser machen soll, wenn eine Funktion mit falschen Parametern aufgerufen wird. Das kann sowohl der Typ als auch die Anzahl sein.
Der Browser soll gar nichts machen. JavaScript ist dynamisch und schwach getypt, Parameter haben keinen festgelegten Typ. Und eine Funktion kann immer mehr oder weniger Parameter entgegennehmen, als in der formalen Parameterliste aufgeführt sind. Deklarierte Parameter, für die kein Wert übergeben wird, bekommen einfach den Wert undefined.
Beispiele:
eval(5) => Falscher Parametertyp
eval("functionA()", "functionB()") => falsche Anzahl
Die Verwendung von eval verstehe ich hier nicht.
Wenn du den Typ von Parametern oder deren Anzahl erzwingen willst, so musst du selbst entsprechende Prüfungen vornehmen und kannst selbst Fehlermeldungen werfen, sofern falsche Typen übergeben werden.
Die Anzahl der Parameter lässt sich mit <http://de.selfhtml.org/javascript/objekte/function.htm#arguments@title=arguments.length> prüfen.
Typabfragen sind in JavaScript möglich (siehe [Objektabfragen](http://aktuell.de.selfhtml.org/artikel/javascript/objektabfragen/)), aber in der Regel interessiert einen in JavaScript nicht der Typ einer Variable. Duck Typing ist die Regel, d.h. man verwendet einen Wert, sofern er gewisse Fähigkeiten hat und brauchbar ist. Die meisten Werte lassen sich umwandeln, viele Operatoren wandeln die Operanden automatisch in die benötigten Typen um.
Mathias