2

foo(a, b, c) function parameters (a, b, c) default definition

Here's my code:

function foo(a, b, c) {


    // a, b, c default @param ?


};

or foo(a, b, callback) {} default callback ? thanks.

0

3 Answers 3

4

The usual solution is this :

function foo(a, b, c) {
    a = a || 22;
    b = b || "ee";
    c = c || function(){};
};

If your parameters could have 0 or '' as valid values, you may test

 if (typeof(a)=='undefined') a==22;
Sign up to request clarification or add additional context in comments.

1 Comment

Yes, the accepted answer is wrong in my opinion : if OP doesn't be careful he will have hard to find bugs.
0

CoffeeScript provides great syntax for that:

test = (a = 1, b = 2) ->
  console.log a, b

When compiled to 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);

Comments

-2

It just give in fo function;

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

or

function foo(a, b, callback) {

    // @param defaults
    var a = a || "default a";
    var b = b || "default b";

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

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.