当前位置: 首页 > 面试题库 >

如何在JavaScript中检查未定义或null变量?

耿和韵
2023-03-14
问题内容

我们经常在JavaScript代码中使用以下代码模式

if (typeof(some_variable) != 'undefined' && some_variable != null)
{
    // Do something with some_variable
}

有没有更冗长的检查方法具有相同的效果?

根据一些论坛和文献的说法,简单地讲,以下内容应具有相同的效果。

if (some_variable)
{
    // Do something with some_variable
}

不幸的是,当未定义时,Firebug会将这样的语句评估为运行时错误some_variable,而第一个语句就可以了。这仅仅是Firebug的一种(有害的)行为,还是这两种方式之间确实存在某些区别?


问题答案:

您必须区分两种情况:

  1. 变量可以是undefined或未 声明的 。如果您在以外的任何上下文中访问未声明的变量,则会收到错误消息typeof

    if(typeof someUndeclaredVar == whatever) // works
    if(someUndeclaredVar) // throws error

已声明但尚未初始化的变量是undefined

let foo;
if (foo) //evaluates to false because foo === undefined
  1. 未定义的 属性 ,例如someExistingObj.someUndefProperty。未定义的属性不会产生错误,而只会返回undefined,当转换为布尔值时,其结果为false。因此,如果您不关心 0and false,则可以使用if(obj.undefProp)。基于这个事实,有一个常见的成语:
    value = obj.prop || defaultValue
    

这表示“如果obj具有属性prop,请将其分配给value,否则分配默认值defautValue”。

有些人认为此行为令人困惑,认为它会导致难以发现的错误,因此建议改用in运算符

    value = ('prop' in obj) ? obj.prop : defaultValue


 类似资料:
  • 问题内容: 我想检查变量是否已定义。例如,以下引发未定义的错误 如何捕获此错误? 问题答案: 在JavaScript中,是一个对象。不存在的事物还有另一个价值,。DOM 在几乎所有无法在文档中找到某些结构的情况下都会返回,但是在JavaScript本身中是所使用的值。 第二,不,没有直接对等的内容。如果您确实要专门检查,请执行以下操作: 如果要检查变量是否存在,那只能用/ 来完成,因为它将未声明的

  • 本文向大家介绍如何在JavaScript中检查未定义的变量?,包括了如何在JavaScript中检查未定义的变量?的使用技巧和注意事项,需要的朋友参考一下 要检查变量是否为“未定义”,您需要使用以下命令进行检查。如果结果为“ false”,则表示未定义变量。在这里,变量结果为“ True”- 示例

  • 问题内容: 测试JavaScript中是否未定义变量的最合适方法是什么?我已经看到了几种可能的方法: 要么 要么 问题答案: 如果您想知道变量是否已声明而无论其值如何,那么使用运算符是最安全的方法。考虑以下示例: 但这在某些情况下可能不是预期的结果,因为已声明但未初始化变量或属性。使用运算符进行更强大的检查。 如果您想知道变量是否尚未声明或具有值,请使用运算符,该运算符可确保返回字符串: 直接比较

  • 本文向大家介绍如何在JavaScript中检查null,undefined或空白变量?,包括了如何在JavaScript中检查null,undefined或空白变量?的使用技巧和注意事项,需要的朋友参考一下 获得以下结果后,您可以查找变量为null还是未定义。如果结果为“ false”,则表示变量为null且未定义。 在这里,变量结果为“ True”- 使用“ typeof”检查变量是否存在-

  • 本文向大家介绍如何检查JavaScript中是否定义了变量?,包括了如何检查JavaScript中是否定义了变量?的使用技巧和注意事项,需要的朋友参考一下 要检查变量是否为“未定义”,您需要使用以下命令进行检查。如果结果为“ false”,则表示未定义变量。在这里,变量结果为“ True”,即定义为- 示例

  • 问题内容: 我看到了这个问题,但是没有看到JavaScript特定的示例。JavaScript中是否有一个简单的可用工具,还是仅用于检查的情况? 问题答案: 如果您只想检查是否有任何价值,可以 如果您需要专门为在空空字符串检查,我想核对是你最好的选择,使用的运营商(让你知道这是,事实上,一个字符串你比较反对)。