在node.js中的默认参数

如何设置node.js中的默认参数?

例如,假设我有一个通常看起来像这样的函数:

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

调用它会看起来像这样:

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

要么:

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

但是,这似乎并没有像这样node.js支持默认参数。 上面最好的办法是什么?

最简单的解决scheme就是在function里面说

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

这样,如果用户没有提供variables1,则用默认值replace它。

在你的情况下:

 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问题 。 您可以使用--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来创build一个新的函数,该函数已经传入了一组参数:

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

或者,像CoffeeScript这样的编译成JavaScript的语言提供了支持默认参数而不必使用bind

 CoffeeScript: fn = (bar='foo') -> 

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