为了账号安全,请及时绑定邮箱和手机立即绑定

是否使用 == 而不是 === 确定 null/未定义?

是否使用 == 而不是 === 确定 null/未定义?

慕妹3242003 2022-01-07 13:15:49
我目前有一个变量可以null和undefined. 在这两种情况下,我都想离开该功能:if (myvar==null) return;这工作正常,但我从我的 IDE (VS) 中检索警告,因为==它不关心类型===。我知道这==通常被视为糟糕的风格。这是规则的例外吗?我应该简单地忽略此警告并坚持更好的可读性还是建议采取以下措施?if (myvar===null || myvar===undefined) return;
查看完整描述

2 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

问题是缺乏澄清。如果您是为自己编写代码,那很好,因为您确切地知道自己在做什么。但是,如果贡献者找到此代码,他们可以:

  1. 不知道==null/的情况下如何工作undefined

  2. 知道它是如何工作的,但不知道使用是否是故意的(如果你真的想同时检查nullor undefined,或者你只想检查null但 used ==

代码应该是清晰的,因此您经常会发现程序员在此检查之前添加注释以指定是的,他们知道自己在做什么,是的,这是故意的。

最终你厌倦了它并开始使用myvar === null || myvar === undefined.

它更冗长,但更清晰,并且不会产生误解。

我注意到的另一件事是为此类事物创建自定义功能,例如isNil(myvar),尽管冗长,但我更喜欢检查这两个值。


查看完整回答
反对 回复 2022-01-07
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

==有非常具体的规则,通常不推荐,因为这些规则不直观。如果您已经记住了与其行为相关的规则,我只会宽恕使用它,就像所有其他可能不得不处理您的代码的开发人员一样(大多数人没有)。

在这种情况下,a == null返回trueifanullundefined, or 之一document.all,但不返回其他 4 个错误的 JS 值(MDN,包括为什么 document.all 是错误的)。因此,除非您希望它匹配document.all,否则我会使用===.

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


查看完整回答
反对 回复 2022-01-07
  • 2 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信