代码之家  ›  专栏  ›  技术社区  ›  Steztric

存在对对象键的测试,并且在一条语句中为真

  •  1
  • Steztric  · 技术社区  · 6 年前

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

    {
        myKey: true,
    }
    

    if (myObject.myKey == true) {
    }
    

    使用松散相等运算符 == myKey 是未定义的或错误的,只有当它是真的时才是真的。然而,eslint抱怨道 'Expected '===' and instead saw '=='. eslint(eqeqeq)'

    2 回复  |  直到 6 年前
        1
  •  3
  •   Thomas    6 年前

    这个 == 运营商有很多惊喜,这就是为什么eslint不鼓励它。在本例中,eslint的建议完全符合您的要求:

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

    == 运算符仅在值存在且不是布尔值时出现;e、 g.价值 1 . 由于类型转换, 1 == true 1 === true 是假的。

    如果您还想为这种情况提供一个真实的值,只需编写

    if (myObject.myKey) {
    }