在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'; } };