在一个语句中检查对象密钥是否存在并且为真

时间:2019-03-17 13:17:55

标签: javascript eslint

我有一个javascript对象,该对象可能包含也可能不包含可能为真的某个键;

{
    myKey: true,
}

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

if (myObject.myKey == true) {
}

使用宽松的相等运算符==,如果myKey未定义,则答案将为false;否则,答案将为true。但是,埃斯林特抱怨'Expected '===' and instead saw '=='. eslint(eqeqeq)'。这是有效的警告,还是我应该忽略它?

1 个答案:

答案 0 :(得分:3)

==运算符有很多惊喜,这就是eslint劝阻它的原因。在这种情况下,eslint的建议完全符合您的要求:

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

==运算符的区别仅在此值存在且不是布尔值的情况下出现;例如值1。由于类型转换,1 == true为true,而1 === true为false。

如果您还想为此类情况提供真实值,只需编写

if (myObject.myKey) {
}