Javascript 默认参数函数

Javascript 默认参数函数,javascript,Javascript,foo(a,b,c)函数参数(a,b,c)默认定义 这是我的密码: function foo(a, b, c) { // a, b, c default @param ? }; 或者foo(a,b,callback){}默认回调?谢谢。通常的解决方案是: function foo(a, b, c) { a = a || 22; b = b || "ee"; c = c || function(){}; }; 如果您的参数可以将0或'作为有效值,则可以测

foo(a,b,c)函数参数(a,b,c)默认定义

这是我的密码:

function foo(a, b, c) {


    // a, b, c default @param ?


};

或者foo(a,b,callback){}默认回调?谢谢。

通常的解决方案是:

function foo(a, b, c) {
    a = a || 22;
    b = b || "ee";
    c = c || function(){};
};
如果您的参数可以将
0
'
作为有效值,则可以测试

 if (typeof(a)=='undefined') a==22;

它只是给出了fo函数

function foo(a, b, callback) {

    // @param defaults
    (a || (a = "default a"));
    (b || (b = "default b"));


    // if  callback not function is function() {} --> callback();
    (callback || (callback = function() { return ""}));


    console.log(a, b, callback());

};

foo(); // default a default b undefined
foo("a--", "b--", function() { return "callback"}); // a-- b-- callback


CoffeeScript为此提供了很好的语法:

test = (a = 1, b = 2) ->
  console.log a, b
编译为JavaScript时:

(function() {
  var test;

  test = function(a, b) {
    if (a == null) {
      a = 1;
    }
    if (b == null) {
      b = 2;
    }
    return console.log(a, b);
  };

}).call(this);

非常感谢您的回答。是的,我认为公认的答案是错误的:如果OP不小心,他将很难找到bug。
(function() {
  var test;

  test = function(a, b) {
    if (a == null) {
      a = 1;
    }
    if (b == null) {
      b = 2;
    }
    return console.log(a, b);
  };

}).call(this);