如何在node.js中设置默认参数?
例如,假设我有一个通常看起来像这样的函数:
(require 'cl)
(require 'org-drill)
调用它看起来像这样:
function(anInt, aString, cb, aBool=true){
if(bool){...;}else{...;}
cb();
}
或:
function(1, 'no', function(){
...
}, false);
但是,似乎node.js不支持这种方式的默认参数。什么是上面的最佳方法?
答案 0 :(得分:67)
2017回答:节点6及以上包含ES6默认参数
var sayMessage = function(message='This is a default message.') {
console.log(message);
}
答案 1 :(得分:11)
最简单的解决方案是在函数内部说
var variable1 = typeof variable1 !== 'undefined' ? variable1 : default_value;
所以这样,如果用户没有提供variable1,你可以用默认值替换它。
在你的情况下:
function(anInt, aString, cb, aBool) {
aBool = typeof aBool !== 'undefined' ? aBool : true;
if(bool){...;}else{...;}
cb();
}
答案 2 :(得分:2)
请参阅github issue。您可以使用--harmony_default_parameters
node --harmony_default_parameters --eval "const t = function(i = 42) { return i }; console.log(t());"
[...]
默认情况下,它将在v6.0
中启用
答案 3 :(得分:1)
您可以使用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';
}
};