2017-09-07 5 views
-3

Gibt es Nachteile bei der Verwendung benannter Argumente für Funktionen in JavaScript und PHP? Ich sehe keinen Nachteil. Es gibt die Tatsache, dass Sie sie extrahieren müssen (obwohl Sie nicht unbedingt raten müssen) - aber Sie können das als eine Möglichkeit verwenden, Standardeinstellungen zu verwenden. Z.B.Benannte Argumente für Funktionen verwenden

Javascript:

function myFunction (opt) 
{ 
    var name = opt.name || 'Barry', 
     age = opt.age || 26, 
     eyes = opt.eyes || 'brown'; 
} 

Und es so nennen:

myFunction ({ 
    name: 'Fred', 
    age: 56, 
    eyes: 'pink' 
}) 

PHP

function myFunction ($opt) 
{ 
    $name = $opt['name'] ? $opt['name'] : 'Barry'; 
    $age = $opt['age'] ? $opt['age'] : 26; 
    $eyes = $opt['eyes'] ? $opt['eyes'] : 'brown'; 
} 

EDIT: Vielleicht die extract() Funktion hier verwenden, um Dinge einfacher.

Und es so nennen:

myFunction ([ 
    'name' => 'Fred', 
    'age' => 56, 
    'eyes' => 'pink' 
]) 
+0

In JavaScript können Sie entpacken Sie sie effizient mit Destrukturierungszuordnung und haben Standardwerte mit Standardargumenten. – Li357

+0

Sie scheinen "benannte Argumente" mit "einem Objekt" zu verwechseln. Sie können jedes beliebige Objekt an Ihre Funktionen übergeben. – David

+0

@Richard In JS weisen Sie der 'opt' Variablen das' Objekt' zu und in PHP dem 'Array'' 'opt', also übergeben Sie einfach den Parameter' opt' (-; mit anderen Worten - Sie verstehen nicht Was machst du? – Neodan

Antwort

4

In Javascript, Sie Standardwerte verwenden könnte, wie

function myFunction({ name = 'Barry', age = 26, eyes = 'brown'} = {}) { 
 
    console.log(name, age, eyes); 
 
} 
 

 
myFunction(); 
 
myFunction({ name: undefined, age: 30 }); 
 
myFunction({ name: 'jane', age: 35, eyes: 'blue' });

2

Is there any downside to using named arguments for functions in JavaScript and PHP

eine Gerade. Weder PHP noch JavaScript unterstützen benannte Argumente.

EDIT

Hier wiki page on was Argumente wirklich heißt, scheinen so viele das Konzept falsch zu bekommen.

+0

* "Weder PHP noch JavaScript unterstützen benannte Argumente." * Wirklich? –

+1

Also "ja", es gibt einen Nachteil Es wird nicht funktionieren. – Clive

+0

ja, leider. –

1

Sie sprechen über ein Optionsobjekt, nicht benannte Argumente. Benannte Argumente sind in JavaScript nicht verfügbar und sehen in etwa so aus wie in der folgenden Zeile. Beachten Sie, dass die Parameter nicht innerhalb eines Objekts sind:

myFunction(name: 'Fred', age: 56, eyes: 'pink'); 

eine Optionen verwenden Objekt statt einzelner Funktionsparameter ist sinnvoll, wenn es mehr als ein paar Argumente zu übergeben. Das Objekt muss sich nicht um die Reihenfolge kümmern oder ob Elemente optional sind.

ES2015 unterstützt Destrukturierung und Standardwerte, die dies noch vereinfachen können, wenn die Formatierung zunächst ganz anders aussehen ...

function myFunction ({ name = 'Barry', age = 26, eyes = 'brown'}) 
{ 
    console.log(name, age, eyes); 
} 

Diese Funktion einen Fehler aus, wenn ein Objekt nicht bestanden, aber Es kann ein leeres Objekt oder eines mit einer beliebigen Anzahl dieser Schlüssel annehmen. Als Ninas Antwort zeigt, würden Sie andere Standard müssen, um diesen Fehler zu vermeiden:

function myFunction ({ name = 'Barry', age = 26, eyes = 'brown'} = {}) 
{ 
    console.log(name, age, eyes); 
} 
Verwandte Themen