Ich möchte in einer einzigen Funktion zwei Möglichkeiten der Übergabe von Parametern behandeln. 1) Es sollte ein Standard Weg mit der Übergabe einzelner Parameter sein 2) Es sollte eine Möglichkeit mit einem Array Destruct sein, alle übergebenen Parameter in diesem Array zu holen.Javascript erkennen zerstörten Parameter
Etwas wie folgt aus:
function a (z, c) {
console.log("z => ", z);
console.log("c => ", c);
}
let b = [1,2];
a(...b);
Es funktioniert gut und druckt beide Konsole abzumelden. Ich möchte aber auch die Möglichkeit haben, einen einzigen Parameter zu übergeben. So etwas Ähnliches:
function a (z, c) {
console.log("z => ", z);
console.log("c => ", c);
}
//now varibale b should contains a number, not an array.
//let b = [1,2];
// how can I detect that here is an one parameter
and I can't use the destructed parameter? How I can do this without changing a function call
let b = 1;
// throws an error
a(...b);
Ich kann die Zerstörungs Betreiber bis zu einem gewissen Variable zur Folge haben und testen nicht abtreten es geben ist über typeof usw., weil bei realen destructing - es ist unmöglich.
P.S. Ich weiß, dass der Destruct-Operator nur mit Arrays funktioniert und nicht auf die Number angewendet werden kann. Aber es ist nur ein Beispiel.
Ich frage mich nur, wie ich oder 1 Parameter (wie Zahl) in eine Funktion übergeben oder erkennen, dass dieser Parameter ein Array ist und ich alle Array-Elemente abrufen und in die Funktion wie im Fall mit Standardfunktion mit aufrufen sollte mehrere Parameter
myFunc(1,2,3,4)
Vielleicht kann mir jemand helfen? Danke für jede Information.
UPDATE:
Wie wie eine hässliche Lösung kann ich einfach verwenden, wenn Typprüfung, aber ich weiß nicht, wie richtig es sein wird.
Warum nicht einfach 'a (b)'? – Cristy
Können Sie 'a (b)' nicht aufrufen und dann überprüfen, ob b ein Array innerhalb Ihrer Funktion ist? – James
In meinem Fall leider nicht. Beachte jede Funktion sollte nicht über Arten von Parametern wissen. Es sollte wie bei einem Standardanruf funktionieren. (Es ist sehr wichtig becase Ich möchte ein Dienstprogramm entwickeln, das verwendet wird, um viel vorhandenen Code zu erhöhen). Wenn also eine Funktion A, B, C annehmen soll, sollte sie am Ende direkt A, B, C und kein Array erhalten. – Velidan