Heim >Web-Frontend >js-Tutorial >Wie gehe ich mit optionalen Funktionsparametern in ES6 um: Typprüfung vs. ternärer Operator?
ES6-Feature: Optionale Funktionsparameter
Der herkömmliche Ansatz für optionale Funktionsparameter in JavaScript beinhaltet eine logische ODER-Prüfung (||), dargestellt am Beispiel im folgenden Codeausschnitt:
function myFunc(requiredArg, optionalArg){ optionalArg = optionalArg || 'defaultValue'; // Do stuff }
Obwohl diese Technik die traditionelle Methode war, weist sie bestimmte Einschränkungen auf. Wenn beispielsweise optionalArg übergeben wird, aber als falsch ausgewertet wird, wird der Standardwert nicht zugewiesen.
Alternative Ansätze
Um diese Einschränkung zu beheben, werden zwei alternative Ansätze vorgeschlagen:
1. Typprüfung:
if (typeof optionalArg === 'undefined') { optionalArg = 'default'; }
Bei diesem Ansatz wird überprüft, ob optionalArg undefiniert ist, und der Standardwert zugewiesen, wenn diese Bedingung erfüllt ist. Dadurch wird sichergestellt, dass der Standardwert nur dann festgelegt wird, wenn optionalArg fehlt oder wenn er explizit auf undefiniert festgelegt ist.
2. Ternärer Operator:
optionalArg = (typeof optionalArg === 'undefined') ? 'default' : optionalArg;
Der ternäre Operator bietet eine übersichtliche Alternative für die Handhabung optionaler Parameter. Der Ausdruck ergibt den Standardwert, wenn optionalArg undefiniert ist; Andernfalls behält es den ursprünglichen Wert von optionalArg bei.
Welche Auswahl?
Sowohl die Typprüfung als auch der ternäre Operatoransatz bieten effektive Lösungen für das Problem optionaler Parameter. Die Wahl zwischen ihnen hängt von den persönlichen Vorlieben und der Lesbarkeit des Codes ab. Die Syntax des ternären Operators ist kompakter, während der Ansatz der Typprüfung möglicherweise expliziter ist.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit optionalen Funktionsparametern in ES6 um: Typprüfung vs. ternärer Operator?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!