Node.jsでデフォルトパラメータを設定するにはどうすればよいですか?
たとえば、通常は次のような関数があるとします。
function(anInt, aString, cb, aBool=true){
if(bool){...;}else{...;}
cb();
}
呼び出すには、次のようになります。
function(1, 'no', function(){
...
}, false);
または:
function(2, 'yes', function(){
...
});
ただし、node.jsがこの方法でデフォルトのパラメーターをサポートしているようには見えません。上記を達成する最良の方法は何ですか?
最も簡単な解決策は、関数内で言うことです
var variable1 = typeof variable1 !== 'undefined' ? variable1 : default_value;
このように、ユーザーがvariable1を指定しなかった場合、デフォルト値に置き換えます。
あなたの場合:
function(anInt, aString, cb, aBool) {
aBool = typeof aBool !== 'undefined' ? aBool : true;
if(bool){...;}else{...;}
cb();
}
2017年の回答:ノード6以上にはES6のデフォルトパラメーターが含まれます
var sayMessage = function(message='This is a default message.') {
console.log(message);
}
github issue を参照してください。 --harmony_default_parameters
を使用して、現在のノードバージョン(f.ex. 5.8.0)でデフォルトのパラメーターを有効にできます。
node --harmony_default_parameters --eval "const t = function(i = 42) { return i }; console.log(t());"
[...]
V6.0ではデフォルトで有効になります
bind
を使用して、引数のセットがすでに渡されている新しい関数を作成できます。
fn1 = fn.bind(fn, 1, 'no', function(){}, false);
fn1();
fn2 = fn.bind(fn, 2, 'yes', function(){});
fn2(true);
あるいは、JavaScriptにコンパイルする CoffeeScript のような言語は、bind
を使用せずにデフォルトのパラメーターをサポートするメカニズムを提供します。
CoffeeScript:
fn = (bar='foo') ->
JavaScript:
fn = function(bar) {
if (bar == null) {
bar = 'foo';
}
};