I am trying to create a reusable function that checks if a variable is undefined or not. The strange thing is that it does not work when I pass the variable to the function to execute the code, but if I use the same logic outside of the function, it works. Is there any way to get this function isDefined to work?
//THIS WORKS AND RETURN FALSE
alert(typeof sdfsdfsdfsdf !== 'undefined');
//THIS GIVES AN ERROR, WHY?
//Uncaught ReferenceError: sdfsd is not defined
function isDefined(value) {
alert(typeof value !== 'undefined' && value !== null)
}
isDefined(sdfsd);
Live example here (check the console for errors): http://jsfiddle.net/JzJHc/
You cannot use a variable that hasn’t been declared unless it’s in a
typeoftestWhen you try to pass a variable that hasn’t been declared into a function, that is considered using that undeclared variable. You’ll notice that the error is in the caller, not inside
isDefinedYou need to run the check for
before you pass it into the function. Basically that means you can’t write a
isDefinedfunction that accepts undeclared variables. Your function can only work for undefined properties (which are OK to pass around)However, I am curious, what is the real world case where you’re passing a variable that doesn’t exist? You should declare all your variables and they should exist already. Had you declared
var sdsdsdsit would exist with the value ofundefinedand yourisDefinedfunction would work just fine.