使用==而不是===对于null/undefined可以吗?

52 浏览
0 Comments

使用==而不是===对于null/undefined可以吗?

这个问题在这里已经有答案了:

如何确定变量是“未定义”还是“空值”?

JavaScript比较中应该使用哪个等于运算符(== vs ===)?

我目前有一个变量,它可以是null,也可以是undefined。在这两种情况下,我想要离开函数:

if (myvar==null) return;

这样做没问题,但是我会从我的IDE(VS)中获得警告,因为==不关心类型,而===关心。我知道==通常被认为是不好的风格,因为这一点。

这是例外情况吗?我应该简单地忽略这个警告,坚持更好的可读性,还是应该采取以下推荐行动?

if (myvar===null || myvar===undefined) return;

admin 更改状态以发布 2023年5月24日
0
0 Comments

==有非常具体的规则,并且通常不建议使用,因为这些规则并不直观。我只会支持使用它,如果你已经记忆了与其行为相关的规则,就像其他可能不得不处理你的代码的开发人员一样(大多数人没有)。

在这种情况下,a == null返回true,如果anullundefineddocument.all中的一种,但不是其他四个错误的JS值(包括为什么document.all是错误的)。所以除非你想匹配document.all,否则我会使用===

此外,在所有地方使用===可以增加代码的一致性。

0
0 Comments

问题在于缺少澄清。\n如果你为自己编写代码,那没问题,因为你确切地知道自己在做什么。但如果某个贡献者发现了这段代码,他们可能会:
\n

    \n

  1. 不知道在null / undefined的情况下==是如何工作的
  2. \n

  3. 知道它是如何工作的,但不知道使用是否有意义(如果你要检查nullundefined,或者只是想检查null但使用了==
  4. \n

\n代码应该清晰明了,所以通常你会发现编程人员在此检查之前添加注释,以指明是的,他们知道自己在做什么,也是故意的。\n最终,你会烦透这些,并开始使用myvar === null || myvar === undefined。\n这更冗长,但更清晰,不会引起误解。\n我注意到另一件事是为此类事情创建自定义函数,例如isNil(myvar),但尽管它更冗长,我仍然更喜欢检查两个值。

0