Erklärung der Javascript-Argumente, Realisierung von Parametern variabler Länge.
In C# gibt es Parameter mit variabler Länge params[], aber wie implementiert man solche variablen Parameter in js?
1. Parameter variabler Länge
Argumente sind eine sehr gute Lösung. Ich wusste nie, dass es in Javascript so etwas gibt.
Sehen wir uns zunächst das Anwendungsszenario an, bei dem Argumente verwendet werden, um eine beliebige Anzahl von Parametern an die js-Funktion zu übergeben.
function Test() { console.log(arguments[0]); console.log(arguments[1]); console.log(arguments[2]); }; Test(1, 2, 3);
Ausgabe 1 2 3;
Natürlich können Sie auch ein Array in die Javascript-Funktion einfügen, aber es ist von feste Länge von.
2. Ändern Sie das Argumentobjekt nicht direkt.
Das Argumentobjekt ähnelt einem Array, ist aber tatsächlich kein Array kann darauf verwendet werden, aber versuchen Sie nicht, die Argumente zu ändern. Es ist leicht, Verwirrung zu stiften.
Wenn Sie es wirklich ändern möchten, können Sie den Inhalt der Argumente in ein neues Array kopieren und ihn dann im neuen Array ändern.
var args = [].slice.call(arguments);
Binden Sie Argumente mit Variablen, um einen funktionsübergreifenden Zugriff zu erreichen.
Argumentvariablen sind implizit an den Körper gebunden Beachten Sie, dass es sich bei jeder Funktion innerhalb jeder Funktion befindet.
Ein Beispiel eines Iterators kann dieses Problem veranschaulichen
function values() { //values有自己的arguments var i = 0, n = arguments.length; return { hasNext: function () { return i < n; //hasNext 有自己的arguments }, next: function () { if(i >= n) { throw new Error("已经是最后一个元素!"); } return arguments[i++]; //next 有自己的arguments } } } var it = values(1, 2, 3, 4, 5, 6, 7); console.log(it.next()); //undefined console.log(it.next()); //undefined console.log(it.next()); //undefined
Wenn Sie auf die Argumente der äußeren Funktion zugreifen möchten, müssen Sie Folgendes tun: kann nur verwendet werden Auf die lokale Variablenbindungsmethode kann von der inneren Ebene aus zugegriffen werden. Das obige Beispiel kann in
function values() { //values有自己的arguments var i = 0, n = arguments.length, ourterArgs = arguments; return { hasNext: function () { return i < n; //hasNext 有自己的arguments }, next: function () { if(i >= n) { throw new Error("已经是最后一个元素!"); } return ourterArgs[i++]; //ourterArgs 外层保存的 arguments } } } var it = values(1, 2, 3, 4, 5, 6, 7); console.log(it.next()); //1 console.log(it.next()); //2 console.log(it.next()); //3