Die Codekopie lautet wie folgt:
<script Language = "JavaScript">
// der erste Parameterwert.
Funktionstest (a, b, c, d) {
alarm (Argumente [0]);
}
// Argumente [0] ist eigentlich a. In ähnlicher Weise sind Argumente [1] B, C, D wiederum
</script>
Die Codekopie lautet wie folgt:
<script Language = "JavaScript">
{
Funktion function_name (exp1, exp2, exp3, exp4)
{
var Umber = "";
Umber = Argumente.Length;
Alarm (Umber);
}
function_name ('a', 'b', 'c', 'd'); kann alle genannt werden
// function_name ("a", "b", "c", "d"); kann aufgerufen werden
}
</script>
1. In JavaScript ist das Argumenteobjekt ein relativ spezielles Objekt, das tatsächlich eine integrierte Eigenschaft der aktuellen Funktion ist. Argumente sind Array sehr ähnlich, aber eigentlich keine Array -Instanz. Es kann durch den folgenden Code überprüft werden (natürlich ist es in der Funktion funcarg natürlich unnötig, Argumente als funcarg.argumente zu schreiben, sondern nur Argumente zu schreiben).
Die Codekopie lautet wie folgt:
Array.Prototype.Testarg = "Test";
Funktion funcarg () {
Alert (funcarg.Arguments.Testarg);
Alert (funcarg.Argumente [0]);
}
Alert (New Array (). TestArg); // Ergebnis: "Test"
Funcarg (10); // Ergebnis: "undefined" "10"
2. Die Länge des Argumenteobjekts wird eher durch die Anzahl der realen Parameter als durch die Anzahl der formalen Parameter bestimmt. Die formalen Parameter sind Variablen, die den Speicherplatz Speicherplatz in der Funktion wiedereröffnen, sich jedoch nicht mit dem Speicherraum des Argumenteobjekts überlappen. Wenn sowohl Argumente als auch Werte existieren, werden die Werte synchronisiert, aber für einen von ihnen werden die Werte für diese wertlose Situation nicht synchronisiert. Der folgende Code kann überprüft werden.
Die Codekopie lautet wie folgt:
Funktion f (a, b, c) {
alarm (Argumente.Length); // Ergebnis: "2"
a = 100;
alarm (Argumente [0]); // Ergebnis: "100"
Argumente [0] = "qqyumidi";
Alarm (a); // Ergebnis: "qqyumidi"
Alarm (c); // Ergebnis: "undefiniert"
C = 2012;
Alarm (Argumente [2]); // Ergebnis: "undefiniert"
}
F (1, 2);
3. Aus der Erklärung und den Aufrufmerkmalen von Funktionen in JavaScript ist zu erkennen, dass Funktionen in JavaScript nicht überladen werden können.
Basierend auf der Grundlage der Überladung in anderen Sprachen: "Der Rückgabewert der Funktion ist unterschiedlich oder die Anzahl der formalen Parameter ist unterschiedlich", können wir die obige Schlussfolgerung ziehen:
Erstens: Es gibt keine solche Aussage, dass die Erklärung der JavaScript -Funktionen einen Werttyp zurückgibt.
Zweitens: Die Anzahl der formalen Parameter in JavaScript dient streng nur dazu, den variablen Betrieb in Funktionen zu erleichtern. Tatsächlich wurden die tatsächlichen Parameter im Argumenteobjekt gespeichert.
Darüber hinaus ist ein tiefes Verständnis dafür, warum Funktionen nicht in JavaScript von der JavaScript -Funktion selbst überladen werden können: In JavaScript sind Funktionen tatsächlich Objekte, und der Funktionsname ist ein Verweis auf die Funktion oder der Funktionsname selbst ist eine Variable. Für die unten gezeigte Funktionserklärung und Funktionsausdruck ist das obige tatsächlich gleich (ohne den Unterschied zwischen Funktionserklärung und Funktionsausdruck), ist es für uns sehr hilfreich, das Merkmal zu verstehen, dass Funktionen in Javascript nicht überlastet werden können.
Die Codekopie lautet wie folgt:
Funktion f (a) {
Return a + 10;
}
Funktion f (a) {
Return a - 10;
}
// ohne den Unterschied zwischen Funktionserklärung und Funktionsausdruck zu berücksichtigen, entspricht es den folgenden
var f = Funktion (a) {
Return a + 10;
}
var f = Funktion (a) {
Return a - 10;
}
4. Es gibt eine sehr nützliche Eigenschaft im Argumenteobjekt: Callee. Argumente.Callee gibt die aktuelle Funktionsreferenz zurück, in der sich dieses Argumentobjekt befindet. Verwenden Sie bei der Verwendung rekursiger Aufrufe zur Funktionsfunktion Argumente. Callee anstelle des Funktionsnamens selbst.
wie folgt:
Die Codekopie lautet wie folgt:
Funktionenzahl (a) {
if (a == 1) {
Rückkehr 1;
}
return a + argumente.callee (-a);
}
var mm = count (10);
Alarm (MM);