how to use function(1)(2) in javascript? and how does it work?
function, javascript
Solution
In this case you are supposing that function(1) returns a function, than you are calling this new, anonymous function with an argument of 2.
See this example:
function sum(a) {
return function(b) {
return a+b;
}
}
// Usage:
window.alert(sum(5)(3)); // shows 8
var add2 = sum(2);
window.alert(add2(5)); // shows 7
window.alert(typeof(add2)); // shows 'function'
Here we create a function `sum` that takes one argument. Inside the function `sum`, we create an `anonymous function` that takes another argument. This anonymous function is returned as the result of executing `sum`.
Note that this anonymous function is a great example of what we call closure. A closure is a function that keeps the context in which it was created. In this case, it will keep the value of the variable `a` inside it, as did the example function `add2`. If we create many closures, they are independent as you can see:
var add3 = sum(3);
var add4 = sum(4);
window.alert(add3(3)); // shows 6
window.alert(add4(3)); // shows 7
Furthermore, they won't get "confused" if you have similarly named local variables:
var a = "Hello, world";
function multiply(a) {
return function(b) {
return a * b;
}
}
window.alert(multiply(6)(7)); // shows 42
var twoTimes = multiply(2);
window.alert(typeof(twoTimes));
window.alert(twoTimes(5));
So, after a call to `sum(2)` or `multiply(2)` the result is not a number, nor a string, but is a `function`. This is a characteristic of functional languages -- languages in which functions can be passed as parameters and returned as results of other functions.
Problem
I understand calling function(1) but not function(1)(2), how does it work? also possible for function(1)(2)(3)(4) too?