Javascript函数变量预设

时间:2010-09-03 17:13:46

标签: javascript function

我有一个函数,我想传递一个参数,但是我希望它默认为0。

是否有可能与PHP类似,例如:

function byMonth(export=0) {

非常感谢

3 个答案:

答案 0 :(得分:11)

不要这样做

function byMonth(export){
  export = export || 0;
  alert(export);
}

修改

之前的版本有一个无声的错误,我只是作为不做的例子。

问题是,假设您将函数传递给参数false,它将采用默认值,尽管您实际上是使用参数调用它。

所有其他参数都将被忽略,默认将被使用(因为 falsy 的javascript概念)

  • 数字为0
  • 空字符串""
  • NaN
  • false
  • null
  • 和(显然)undefined

检查参数是否存在的更安全的方法是:

  function byMonth(export){
      if(export === undefined) export = 0;
  }

编辑2

之前的功能并非100%安全,因为某人(可能是一个白痴)可以定义undefined使该功能出乎意料。这是一个最终的,适用于任何地方的防弹版本:

function byMonth(export){
  var undefined;
  if(export === undefined) export = 0;
}

答案 1 :(得分:4)

您可以在内部设置默认值,如下所示:

function byMonth(export) {
  export = export || 0;
  //your code
}

答案 2 :(得分:0)

我迟到了6年多,但现在有了ES6,还有另一个解决方案。 Pablo Fernandez说你可以将undefined设置为一个值,你应该像这样检查:

function byMonth(export){
  var undefined;
  if(export === undefined) export = 0;
}

好吧,现在你可以这样做了:

function byMonth(export){
  if(export === void 0) export = 0;
}

void 0始终评估为"真实" undefined