我有一个javascript对象,该对象可能包含也可能不包含可能为真的某个键;
{
myKey: true,
}
我想测试密钥是否存在,以及是否存在,是否为真。我可以这样做;
if (myObject.myKey == true) {
}
使用宽松的相等运算符==
,如果myKey
未定义,则答案将为false;否则,答案将为true。但是,埃斯林特抱怨'Expected '===' and instead saw '=='. eslint(eqeqeq)'
。这是有效的警告,还是我应该忽略它?
答案 0 :(得分:3)
==
运算符有很多惊喜,这就是eslint劝阻它的原因。在这种情况下,eslint的建议完全符合您的要求:
if (myObject.myKey === true) {
}
与==
运算符的区别仅在此值存在且不是布尔值的情况下出现;例如值1
。由于类型转换,1 == true
为true,而1 === true
为false。
如果您还想为此类情况提供真实值,只需编写
if (myObject.myKey) {
}