如何在 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]