52ky 发表于 2022-5-3 11:58:58

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

问题
我们经常在 JavaScript 代码中使用以下代码模式
if (typeof(some_variable) != 'undefined' && some_variable != null)
{
    // Do something with some_variable
}
是否有一种不那么冗长的检查方法会产生相同的效果?

根据一些论坛和文献,简单地说以下应该具有相同的效果。
if (some_variable)
{
    // Do something with some_variable
}
不幸的是,当 some_variable 未定义时,Firebug 在运行时将这样的语句评估为错误,并且第一条语句正好适合它。这只是萤火虫的(不想要的)行为,还是两种方式之间真的有什么区别?

回答
您必须区分不同的情况:

不明确的

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

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

let foo;
if (foo) //evaluates to false because foo === undefined
someExistingObj.someUndefProperty

undefined

false

0

false

if(obj.undefProp)

value = obj.prop || defaultValue

obj

prop

value

defautValue

in

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



页: [1]
查看完整版本: 如何在 JavaScript 中检查未定义或空变量?