2016-02-17 10 views
19

Wie wird man vorgehen, um Standardparameter in node.js zu setzen?Standardparameter in node.js

Zum Beispiel lassen Sie uns sagen, dass ich eine Funktion haben, die normalerweise würde wie folgt aussehen:

function(anInt, aString, cb, aBool=true){ 
    if(bool){...;}else{...;} 
    cb(); 
} 

es nennen würde wie folgt aussehen:

function(1, 'no', function(){ 
    ... 
}, false); 

oder:

function(2, 'yes', function(){ 
    ... 
}); 

Es scheint jedoch nicht, dass node.js Standardparameter auf diese Weise unterstützt. Was ist der beste Weg, oben zu acomplish?

+3

Mögliche Duplikat http://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a-javascript-function – migg

+0

Sie babel verwenden könnte und Ihren ursprünglichen Code halten. –

+0

Mögliches Duplikat von [Legen Sie einen Standardparameterwert für eine JavaScript-Funktion fest] (https://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a-jascript-function) – mikemaccana

Antwort

10

einfachste Lösung ist innerhalb der Funktion

var variable1 = typeof variable1 !== 'undefined' ? variable1 : default_value; 

Also diese Weise zu sagen, wenn der Benutzer nicht variable1 liefern haben, können Sie es mit Standardwert ersetzen.

In Ihrem Fall:

function(anInt, aString, cb, aBool) { 
    aBool = typeof aBool !== 'undefined' ? aBool : true; 
    if(bool){...;}else{...;} 
    cb(); 
} 
1

Sie können bind verwenden, um eine neue Funktion zu erstellen, die bereits eine Reihe von Argumenten hat hineingeben:

fn1 = fn.bind(fn, 1, 'no', function(){}, false); 
fn1(); 
fn2 = fn.bind(fn, 2, 'yes', function(){}); 
fn2(true); 

Alternativ langues wie CoffeeScript, die in kompilieren JavaScript stellt Mechanismen bereit, die Standardparameter unterstützen, ohne dass bind:

verwendet werden muss
JavaScript: 

fn = function(bar) { 
    if (bar == null) { 
    bar = 'foo'; 
    } 
}; 
3

die github issue See. Sie können Standardparameter in aktuellen Knoten Versionen (zb 5.8.0) unter Verwendung von --harmony_default_parameters

node --harmony_default_parameters --eval "const t = function(i = 42) { return i }; console.log(t());" 

[...]

Es wird standardmäßig aktivieren aktiviert sein, in v6.0

39

2017 Antwort: Knoten 6 und höher enthält nun ES6 Standardparameter

var sayMessage = function(message='This is a default message.') { 
    console.log(message); 
}