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

javascript proper way to determine if not equal particularly in the case of typeof

本文关键字:特别是 typeof 情况下 是否 不相等 JavaScript 方法      更新时间:2023-09-26

可能的重复项:
JavaScript 未定义比较

这总是让我感到困惑,我永远找不到明确的答案,当我尝试其中一种或另一种时,它似乎也没有最终向我表明一种或另一种方式比另一种方式有效或效果更好。

我看到人们这样做:

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

但在任何情况下,我总是不时地出现误报。所以我的问题是,当我想知道字符串是否不为 null 或未定义时,或者如果我想检查 of 的类型不是某种东西,然后基于此做一些事情,我总是以类似的东西结束

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

如何正确地做到这一点,而不必像我最终所做的那样使用 if-else 逻辑

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

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

只需执行以下操作:

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。