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

Error when passing undefined variable to function?

本文关键字:函数 出错 未定义 变量      更新时间:2023-09-26

我正在尝试创建一个可重用的函数来检查变量是否未定义。奇怪的是,当我将变量传递给函数以执行代码时,它不起作用,但是如果我在函数外部使用相同的逻辑,它就可以工作。有没有办法让这个函数被定义工作?

//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/

除非在typeof测试中,否则不能使用尚未声明的变量

当您尝试将尚未声明的变量

传递到函数中时,将考虑使用该未声明的变量。您会注意到错误出在调用方中,而不是在isDefined

您需要运行检查

if (typeof sdsdsd !== 'undefined')

在将其传递到函数之前。基本上,这意味着您无法编写接受未声明变量的isDefined函数。您的函数只能用于未定义的属性(可以传递)

但是,我很好奇,您传递不存在的变量的真实情况是什么?你应该声明所有的变量,它们应该已经存在。如果您声明var sdsdsds它将以 undefined 的值存在,并且您的 isDefined 函数将正常工作。