node.js中的默认参数

时间:2016-02-17 17:45:30

标签: node.js parameters callback default

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

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

(require 'cl)
(require 'org-drill)

调用它看起来像这样:

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

或:

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

但是,似乎node.js不支持这种方式的默认参数。什么是上面的最佳方法?

4 个答案:

答案 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

在当前节点版本(f.ex.5.8.0)中启用默认参数
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';
  }
};