javascript默认函数值

时间:2014-04-07 23:27:36

标签: javascript function default

有什么理由说这样的事情不起作用吗?

var classReplace = function(object, newClass, originalClass = "") {
    //do stuff
}

我一直得到一个"未捕获的SyntaxError:意外的令牌="错误,因为我添加了

originalClass = "" 

部分

3 个答案:

答案 0 :(得分:2)

您可以检查是否已定义originalClass,如果未定义,则将其指定为“”,

var classReplace = function(object, newClass, originalClass) {
 if( typeof(originalClass) === "undefined" ) originalClass = "";
 //do stuff
}

答案 1 :(得分:1)

正如Pointy所说,在JavaScript中设置默认参数值是不可能的,

但是,您可以通过检查所述参数是否为undefined来获得类似的结果,如果是,则将其设置为所需的默认值:

var classReplace = function(object, newClass, originalClass) {
    if (originalClass === undefined) originalClass = "";
    //do stuff
}

答案 2 :(得分:0)

虽然JS在开箱即用中并不存在,但我可以想到除了其他答案之外的两个选项,它们实际上模仿了您正在寻找的功能。

一个。的的CoffeeScript

在其他很酷的功能中,CS支持默认功能值:

var classReplace = (object, newClass, originalClass = "") ->
console.log(originalClass)

当然这只是解释为:

var classReplace = function(object, newClass, originalClass) {
  if (originalClass == null) {
    originalClass = "";
  }
  return console.log(originalClass);
};

但是对于可读性仍然很好,就像我说的那样,CS还有很多其他很酷的功能,可能值得一看。

Lo-Dash partialRight方法。 (link

用法:

var originalFunction = function(a,b) { return a + b; },
    functionWithDefaultValues = _.partialRight(originalFunction, 1, 2);

jsfiddle

备注:

  1. _.partial由于某种原因,没有相同的行为。
  2. _.partialRight会附加右侧的值,因此在上文中,b的默认值为1
  3. 希望这有帮助。