我正在尝试创建一个可重用的函数来检查变量是否未定义.奇怪的是,当我将变量传递给函数执行代码时,它不起作用,但如果我在函数外使用相同的逻辑,它就可以工作.有没有办法让这个函数isDefined起作用?
//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);
Run Code Online (Sandbox Code Playgroud)
这里的实例(检查控制台是否有错误):http://jsfiddle.net/JzJHc/
Jua*_*des 10
除非在typeof
测试中,否则不能使用尚未声明的变量
当您尝试将尚未声明的变量传递给函数时,会考虑使用该未声明的变量.您会注意到错误发生在调用者中,而不在内部isDefined
你需要运行检查
if (typeof sdsdsd !== 'undefined')
Run Code Online (Sandbox Code Playgroud)
在将它传递给函数之前.基本上这意味着你不能写一个isDefined
接受未声明变量的函数.您的函数只能用于未定义的属性(可以传递)
但是,我很好奇,你传递一个不存在的变量的现实世界的情况是什么?您应该声明所有变量,它们应该已经存在.如果你宣称var sdsdsds
它会存在价值,undefined
你的isDefined
功能就可以了.