[英]Checking if object key exists and is true in one statement
我有一个javascript对象,可能包含也可能不包含某个键,可能是也可能不是;
{
myKey: true,
}
我想测试密钥是否存在,如果确实存在,是否为真。 我可以这样做;
if (myObject.myKey == true) {
}
使用松散等于运算符==
,如果myKey
未定义或为false,则答案为false,如果为true,则为true。 然而,eslint抱怨'Expected '===' and instead saw '=='. eslint(eqeqeq)'
'Expected '===' and instead saw '=='. eslint(eqeqeq)'
。 这是一个有效的警告,还是我应该忽略它?
==
运算符有许多惊喜,这就是为什么eslint阻止它的原因。 在这种情况下,eslint建议的确切地符合您的要求:
if (myObject.myKey === true) {
}
如果值存在且不是布尔值,则仅在此处出现与==
运算符的差异; 例如值1
。 由于类型转换, 1 == true
为真,但1 === true
为false。
如果你也想要这种情况的真实价值,那就写吧
if (myObject.myKey) {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.