Ich würde gerne sowohl reguläre JS-Entwickler-Funktionen als auch vordefinierte DOM-Methoden kennen. Was passiert, wenn ich versuche, IE attachEvent
mit der Signatur des WHATWG addEventListener
aufzurufen? Zum Beispiel,
elem.attachEvent('onbillgates\'mom', function(e){ this.mount(); }, false);
Beachten Sie insbesondere false
. Wird diese Fehlermeldung auftreten, obwohl die Signatur der attachEvent
-Methode nur zwei Argumente erfordert?
Danke.
%Vor%JavaScript hat nicht das Konzept einer festen Parameterliste. Für Ihre eigenen Funktionen können Sie immer so viele Parameter angeben, wie Sie möchten, und beliebig viele übergeben, je nach Wunsch.
Für eingebaute Funktionen, die mit nativem Code korrelieren, kommt es auf an.
Sie haben gefragt, worauf es ankommt:
Abschnitt 15 über eingebaute (nicht mit Host zu verwechseln) Funktionen im Allgemeinen
Wenn in der Beschreibung einer bestimmten Funktion nicht anders angegeben, wenn eine Funktion oder ein Konstruktor, die in dieser Klausel beschrieben wird, weniger Argumente erhält, als die Funktion erfordert, sollte sich die Funktion oder der Konstruktor genau so verhalten, als ob sie ausreichend hinzugefügt worden wäre Argumente, wobei jedes Argument der undefinierte Wert ist.
Alles klar. Wenn ich weniger Argumente als benötigt übergebe, hängt es von der Spezifikation der Funktion ab (scrollen Sie in Abschnitt 15 nach der Spezifikation für jede integrierte Funktion).
Wenn in der Beschreibung einer bestimmten Funktion nicht anders angegeben, wenn eine in dieser Klausel beschriebene Funktion oder Konstruktor mehr Argumente erhält, als die Funktion angeben darf, werden die zusätzlichen Argumente vom Aufruf ausgewertet und dann von der Funktion ignoriert. Eine Implementierung kann jedoch implementierungsspezifisches Verhalten in Bezug auf solche Argumente definieren, solange das Verhalten nicht das Auslösen einer TypeError-Ausnahme ist, die lediglich auf das Vorhandensein eines zusätzlichen Arguments basiert.
Wenn zu viele Argumente übergeben werden, sollte niemals ein TypeError ausgelöst werden. Aber es kann noch andere Fehler verursachen. Auch hier hängt es von der Funktion ab, über die Sie sprechen.
Sie haben explizit über das DOM gesprochen und nicht über eingebaute Funktionen. Um ehrlich zu sein kann ich die entsprechenden Teile der Spezifikation nicht finden. Die ECMA-Spezifikation ist so viel einfacher zu lesen als die w3-Website.
Wird nicht weh tun. Sie können eine Funktion sogar mit weniger Parametern aufrufen, als sie benötigt, solange der Funktionscode mit einigen undefinierten Werten in Ordnung ist.
Ich glaube nicht, dass es etwas verwirren wird, wenn Sie nicht explizit mit dem Array impliziter Argumente arbeiten. Warum tust du das?
Werfen Sie einen Blick auf diese Post und vielleicht dieses .
Von MDN :
%Vor%Das Objekt
arguments
ist eine lokale Variable, die in all verfügbar ist Funktionen ;arguments
als Eigenschaft von Function kann nicht mehr verwendet werden.Sie können auf die
arguments
einer Funktion innerhalb der Funktion verweisen, indem Sie verwenden das Objektarguments
. Dieses Objekt enthält einen Eintrag für jedes Argument an die Funktion übergeben, wobei der Index des ersten Eintrags bei 0 beginnt.Sie können das Objekt
arguments
verwenden, wenn Sie eine Funktion mit mehr aufrufenarguments
, als formell akzeptiert wird. Diese Technik ist nützlich für Funktionen, die eine variable Anzahl von übergeben werden können Argumente.
Tags und Links javascript arguments function attachevent