Issue
This Content is from Stack Overflow. Question asked by NeophyteLou
I’m having trouble understanding the behavior of the code below:
function multiplier(factor){
return number => number * factor;
}
let twice = multiplier(2);
console.log(twice(5));
At the function call multiplier(2), the value of 2 is returned to the binding twice, which is 2, but how so? This implies that the return statement would evaluate to 1 * 2, but the parameter number was never assigned a value. I was expecting undefined * 2, instead which would return undefined. Why is the parameter number assigned a value of 1?
Solution
What let twice = multiplier(2);
does is stored following function in twice
variable
function(number) {
// factor variable value was set here
return number * 2;
}
When you called
console.log(twice(5));
It runs function stored in twice variable as following
function(5) {
return 5 * 2;
}
Hence you got 10 on console.
This Question was asked in StackOverflow by NeophyteLou and Answered by Mursleen Amjad It is licensed under the terms of CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.