将未定义的变量传递给函数时出错?

Tru*_*an1 9 javascript

我正在尝试创建一个可重用的函数来检查变量是否未定义.奇怪的是,当我将变量传递给函数执行代码时,它不起作用,但如果我在函数外使用相同的逻辑,它就可以工作.有没有办法让这个函数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功能就可以了.