I'd like to use an inline function with arguments to set a variable. Here is a boiled down version (which apparently is only pseudo code at this point) of what I'm attempting:
var something = 10;
var something_else = 15;
var dynamic_value = (function(something,something_else){
if(something == something_else){
return "x";
}else{
return "y";
}
})();
In this case, "dynamic_value" should be "y". The problem is that the variables "something" and "something_else" are never seen inside of this inline function.
How do you send arguments to an inline function?
edit: I'm using jquery, although that may not really apply to this question.
Send them in when invoking the function
var dynamic_value = (function(something, something_else) {
...
})(value_for_something, value_for_something_else);
You will need to call it like this.
var dynamic_value = (function(something,something_else){
if(something == something_else){
return "x";
}else{
return "y";
}
})(something,something_else);
The reason for this is when you are defining the same names in the function parameter, they are just the names of the parameters, the variables don't get inserted there. The last line is call to the function where actual variables are passed.
Besides, you have just created a closure. The closure has access to all the variables declared in the function that contains it. Another interesting fact in this code is that variables defined at the containing function level are getting shadowed by the variables that are part of the closure function. The reason is obvious: the variable names at the closure is same as the variable names at the containing function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With