I was practicing js closures for my understanding, Can any one help me in resolving the error “result is not a function”.
It would be of great help.
Below is the link:
Your function xy()
doesn’t have a return value. You see that in your last console log where it states “undefined”. So you’re trying to call “undefined” like a function.
Cheers,
Michael
Hello @mikoMK, I have corrected the code and thank you, but I have a question, despite writing the return statement, console.log(result) gives me undefined, why is it so?
Generally while storing the highest parent(outer most function) to a const “name”, and rendering that “name()”,why we are getting undefined?
To create closures you need to return the inner functions. They will then keep the scope they had when declared:
var x = 2;
function xy(){
const a = 2;
console.log(a);
console.log(x +=2);
childFunction = function(){
const s = 10;
console.log('child',s+a);
grandChildFunction=function(){
const i = s*a;
console.log('grandchild', i);
}
return grandChildFunction;
}
return childFunction;
}
const result = xy();
console.log("res", result)
result(); /* childFunction() */
result()(); /* grandChildFunction() */
@mikoMK
Ohh I didn’t know that.
I mean to access innermost function,we need to use ()()
Again as usual you are Amazing man @mikoMK:+1:
I’m glad it was helpful.
If you haven’t already I recommend reading the MDN article about closures: