Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查未定义的变量_Javascript - Fatal编程技术网

Javascript 检查未定义的变量

Javascript 检查未定义的变量,javascript,Javascript,可能重复: 我想检查javascript中定义的变量。请参阅以下几个示例,并帮助我检查Javascript中未定义(且不检查其他内容)的“a”的最佳方法是什么 一个 如果(a==未定义){…} 第二 如果(a==“未定义”){…} 第三 如果(typeof a==“未定义”){…} 最后 如果(a){…} if(typeof a==“undefined”){…}是检查变量是否未定义的最佳方法。 if(a===undefined){…}通常是同一件事,然而,与通常的看法相反,“undefined

可能重复:

我想检查javascript中定义的变量。请参阅以下几个示例,并帮助我检查Javascript中未定义(且不检查其他内容)的“a”的最佳方法是什么

一个

如果(a==未定义){…}

第二

如果(a==“未定义”){…}

第三

如果(typeof a==“未定义”){…}

最后

如果(a){…}

if(typeof a==“undefined”){…}
是检查变量是否未定义的最佳方法。
if(a===undefined){…}
通常是同一件事,然而,与通常的看法相反,“undefined”在javascript中不是一个关键字,实际上可以为它指定一个值。此外,如果未声明或初始化
a
,将抛出错误


if(a==“undefined”){…}
将检查a是否是值为“undefined”的字符串,
if(a){…}
将为所有错误值返回true,例如
null
和0。javascript中的
undefined
是一个实际值,因此如果执行
a==“undefined”
您只是检查已定义的变量是否分配了
未定义的值。如果变量还没有被提升,那么您将得到一个很好的错误

if (typeof a == "undefined") {
    ....
}
if(a)
正在检查
a
的值是
true
还是
false
undefined
和其他许多值一样,都是false,因此它的作用是false。不过,如果之前没有声明该变量,那么这也会抛出一个错误


typeof a==“undefined”
是检查可能还不存在的变量的正确方法。

您是在检查变量是否已定义还是未定义?i、 e.变量定义为:var a;变量未定义:var a;为什么你认为
typeofa===“undefined”
是正确的检查方法?因为它实际上会测试变量是否存在,而不是像其他选项一样,它的值是
undefined
还是
false
。因为如果
a
没有初始化或声明,它不会抛出错误,其中as
if(a)
会。@eclans不,不会。如果a未被声明或初始化并分配了未定义的值,则返回true。您说过如果(a==未定义)通常是相同的。你用哪种方法比较?其次,如果(a的类型==“未定义”)这样说正确吗?或者这是正确的
如果(a的类型==“未定义”)
如果(a的类型==“未定义”)
通常与
如果(a的类型==“未定义”)
相同
if(typeof(a)==“undefined”)
if(typeof(a)==“undefined”)
完全相同。您可以使用您想要的任何版本。@jeff第一个版本不是检查的好方法,因为如果未声明或初始化
a
,将抛出错误。最好的检查方法是
if(typeof a==“undefined”)
。当然,这并不区分
a
是否已创建并分配了未定义的值或根本未创建。但是这种区别到底有什么意义呢?@RobG-谢谢你告诉我第一个方法抛出的错误。我更新了我的答案。