Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JS Function With Two Parentheses and Two Params

Tags:

javascript

I'm trying to understand how a function works that is run with two parentheses and two parameters. Like so:

add(10)(10); // returns 20

I know how to write one that takes two params like so:

function add(a, b) {
  return a + b;
}

add(10,10); // returns 20

How could I alter that function so it could be run with one set of parameters, or two, and produce the same result?

Any help is appreciated. Literally scratching my head over this.

Thanks in advance!

like image 376
realph Avatar asked Apr 23 '15 11:04

realph


People also ask

What is double parentheses in JS?

It means that the first function ( $filter ) returns another function and then that returned function is called immediately. For Example: function add(x){ return function(y){ return x + y; }; } var addTwo = add(2); addTwo(4) === 6; // true add(3)(4) === 7; // true. Follow this answer to receive notifications.

Which function accepts two arguments in JavaScript?

Let's start by creating a function called add that can accept 2 arguments and that returns their sum. We can use Node. js to run the code node add_2_numbers.

How do you use parentheses in JavaScript?

In JavaScript we only write a value in the parentheses if we need to process that value. Sometimes the purpose of the function is to perform a task rather then process some kind of input. Examples: var sayHello = function() { console.

What is passing argument in JavaScript?

Arguments are Passed by Value The parameters, in a function call, are the function's arguments. JavaScript arguments are passed by value: The function only gets to know the values, not the argument's locations. If a function changes an argument's value, it does not change the parameter's original value.


1 Answers

How could I alter that function so it could be run with one set of parameters, or two, and produce the same result?

You can almost do that, but I'm struggling to think of a good reason to.

Here's how: You detect how many arguments your function has received and, if it's received only one, you return a function instead of a number — and have that function add in the second number if it gets called:

function add(a,b) {
  if (arguments.length === 1) {
    return function(b2) { // You could call this arg `b` as well if you like,
      return a + b2;      // it would shadow (hide, supercede) the one above
    };
  }
  return a + b;
}
console.log(add(10, 10)); // 20
console.log(add(10)(10)); // 20

I said "almost" above because just because the add function received only one argument, that doesn't guarantee that the caller is going to call the result. They could write:

var x = add(10);

...and never call the function that x now refers to.

like image 134
T.J. Crowder Avatar answered Sep 27 '22 19:09

T.J. Crowder