javascript正确的方法,以确定是否不相等,特别是在typeof的情况下

时间:2013-01-24 21:16:17

标签: javascript jquery operators

  

可能重复:
  javascript undefined compare

这总是让我困惑,我永远无法找到一个明确的答案,当我尝试一个或另一个时,它似乎也无法确切地告诉我,一种方式或另一方的工作或工作比另一方更好。

我看到人们这样做:

typeof system_obj.alpha !== 'undefined'
!typeof system_obj.alpha == 'undefined'
typeof system_obj.alpha != 'undefined'

但在任何一种情况下,我总是一次又一次地误报。所以我的问题是,当我想知道不是一个字符串不是null,或者是未定义的,或者如果我想检查一下这个类型不是什么东西然后做一些基于我的东西总是最终得到像< / p>

if(typeof system_obj.alpha == 'undefined'){/*ignore*/}else
{
  //code
}

如何在不使用if-else逻辑的情况下正确地执行此操作,就像我最终要做的那样

2 个答案:

答案 0 :(得分:1)

使用system_obj.alpha === void 0这是检查变量是否未定义的最快方法,并且它是可靠的。这是比较。

http://jsperf.com/typeof-vs-undefined-check/3

答案 1 :(得分:1)

请执行以下操作:

if (typeof systemObj !== 'undefined') {
  ... do something
}

要测试对象是否真实(并且未定义,null,false等),请执行以下操作:

if (systemObj) {
    ... do something (will throw error is object does not exist)
}

您的示例显示在上方的方式可以执行以下操作:

 if (systemObj.hasOwnProperty('alpha') && systemObj.alpha) {
     ... do something
 }

这将检查以确保alpha存在且不是假的。

在问题范围之外,我建议如下:

  • 使用驼峰案例。

  • 请勿以这种方式撰写if语句。

  • 查看http://addyosmani.com/blog/或类似资源,了解如何编写更好的JavaScript。