首页 > 解决方案 > 检查对象键是否存在并且在一个语句中为真

问题描述

我有一个 javascript 对象,它可能包含也可能不包含某个键,该键可能是也可能不是;

{
    myKey: true,
}

我想测试密钥是否存在,如果确实存在,是否为真。我可以这样做;

if (myObject.myKey == true) {
}

使用松散相等运算符==,如果未定义或为假,答案将为myKey假,只有当它为真时才为真。但是,eslint 抱怨'Expected '===' and instead saw '=='. eslint(eqeqeq)'。这是一个有效的警告,还是我应该忽略它?

标签: javascripteslint

解决方案


==运营商有很多惊喜,这也是 eslint 不鼓励它的原因。在这种情况下,eslint 的建议完全符合您的要求:

if (myObject.myKey === true) {
}

==仅当值存在且不是布尔值时,才会出现与运算符的差异;例如值1。由于类型转换,1 == true为真,但1 === true为假。

如果您还想要此类情况的真实值,只需编写

if (myObject.myKey) {
}

推荐阅读