[1,2,3] .Length kann 3 erhalten, und "123". Length kann auch 3. Jeder, der JS versteht, weiß, weiß das.
Aber was wird eval.length, regexp.length, "" .ToString.length, 1..toString.length Get?
Holen Sie sich 1, 2, 0 und 1. Was repräsentieren diese Zahlen?
Dies ist eine Frage, die viele neue Freunde in der Gruppe gestellt haben. Tatsächlich ist die Länge der Funktion die Anzahl der formalen Parameter.
Nehmen wir ein kurzes Beispiel:
Die Codekopie lautet wie folgt:
Funktionstest (a, b, c) {}
test.length // 3
Funktionstest (a, b, c, d) {}
test.length // 4
Ist es nicht sehr einfach, aber es gibt auch besondere. Wenn der Parameter intern durch Argumente aufgerufen wird und kein tatsächlicher Parameter definiert ist, wird die Länge nur 0 erhältlich.
Die Codekopie lautet wie folgt:
Funktion test () {console.log (Argumente);}
test.length // 0
Diese Funktion kann in der Tat Parameter übergeben, und Parameter werden auch intern bezeichnet, aber die Länge kann die Anzahl der übergebenen Parameter nicht kennen.
Die tatsächlichen Parameter können nur durch Argumente erhalten werden, wenn die Funktion ausgeführt wird.
Die Codekopie lautet wie folgt:
Funktion test () {console.log (Argumente.length);};
Test (1,2,3); // Ausgabe 3
Test (1,2,3,4); // Ausgabe 4
Daher kann die Länge Eigenschaft einer Funktion nur die Anzahl ihrer formalen Parameter erhalten, kann jedoch die Anzahl der realen Parameter nicht kennen.