Difficulty: 5/10currying, recursion, functional programmingjavascriptCopyjavascriptCopyScenario Questions0-2 years experience1We have a simple function `add(a, b)` that returns `a + b`. Show me how you'd create a curried version of `add` using recursion in JavaScript.2If you call your curried `add` with only one argument, what does it return and why?3What happens if you invoke the curried function with all arguments at once versus one at a time?Follow-up QuestionsHow would you preserve the original function's name and length properties?What changes would you make to avoid potential stack overflow with deep recursion?Can you explain how your curry implementation interacts with JavaScript's `this` binding?Suggest Improvement