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