node.js 中的默认参数
default parameters in 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似乎不支持这种方式的默认参数。完成上述内容的最佳方法是什么?
最简单的解决方案是在函数内部说
var variable1 = typeof variable1 !== 'undefined' ? variable1 : default_value;
这样一来,如果用户没有提供变量 1,您可以将其替换为默认值。
你的情况:
function(anInt, aString, cb, aBool) {
aBool = typeof aBool !== 'undefined' ? aBool : true;
if(bool){...;}else{...;}
cb();
}
您可以使用 bind
创建一个已经有一组参数传递给它的新函数:
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';
}
};
参见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());"
[...]
It'll be enabled by default in v6.0
2017答案:节点6及以上包含ES6默认参数
var sayMessage = function(message='This is a default message.') {
console.log(message);
}
如何在 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;
这样一来,如果用户没有提供变量 1,您可以将其替换为默认值。
你的情况:
function(anInt, aString, cb, aBool) {
aBool = typeof aBool !== 'undefined' ? aBool : true;
if(bool){...;}else{...;}
cb();
}
您可以使用 bind
创建一个已经有一组参数传递给它的新函数:
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';
}
};
参见github issue。您可以使用 --harmony_default_parameters
node --harmony_default_parameters --eval "const t = function(i = 42) { return i }; console.log(t());"
[...]
It'll be enabled by default in v6.0
2017答案:节点6及以上包含ES6默认参数
var sayMessage = function(message='This is a default message.') {
console.log(message);
}