真的用typeof检查是否未定义

时间:2013-06-25 12:21:09

标签: javascript typeof

什么是更好的解决方案?

if(typeof bla === "undefined" || bla === null)...

或者

if(bla)...

如果我做第二个解决方案,我真的需要检查它是否未定义?

感谢。

3 个答案:

答案 0 :(得分:3)

这取决于您对变量的期望。

如果它应该包含一个对象,第二个选项可以正常工作,因为任何对象引用都是真实的。

如果它应该包含一个布尔值,则第二个选项根本不起作用,因为false将得到与不存在的值相同的结果。

答案 1 :(得分:0)

  
    

我真的需要检查它是否未定义?

  

不,undefined和null都解析为false。第二种选择肯定更好。

答案 2 :(得分:0)

“检查是否未定义”,最佳解决方案通常是第三个:

Demo

function isDef(obj) {
    var undefined;
    return obj === undefined;
}

这会检查对象是否未定义且不会因typeof而浪费时间,并且此测试未通过""nullNaN或{{1}验证为真和你的第二次测试一样。

唯一的缺陷是有人可以覆盖全局0对象。在ES5严格模式下不可能,但您的代码应该屏蔽它。使用本地undefined定义隐藏undefined会为您做到这一点。

此外,通过使用var undefined;功能,您可以实现更好的便携式缩小和更简单的逻辑。

isDef