var str = 'internet';
performAction(function(str) {
console.log(str);
});
Is there a problem with having a private variable str
and also having a callback function with a parameter of the same name?
Thanks!
var str = 'internet';
performAction(function(str) {
console.log(str);
});
Is there a problem with having a private variable str
and also having a callback function with a parameter of the same name?
Thanks!
There is technically no problem with it. The function will log the
str
that is currently in scope (your parameter).For obvious reasons, this is not considered a good idea. At the very least, it makes for unreadable code.
This is just a standard scope situation - the fact that it is an anonymous function expression passed as a parameter to another function doesn't matter. Note that within your
performAction()
function (which you don't show) it will not have any access to thestr
that is the parameter of the callback function - ifperformAction()
referencesstr
it will get the global "internet" variable (or its own localstr
if defined).A function's parameters are, for scope purposes, the same as that function's local variables, which means they mask other variables of the same name from outer scope - but variables with different names can still be accessed even if defined in a wider scope.
Where it could get confusing is if you do something like this:
In that case I have a function with a parameter called
str
but when I call it I'm passing in a differentstr
. Note that changingstr
within that function only changes the localstr
, not the global one. They are two different variables...