【问题标题】:How do I say 'not in' in Javascript? [duplicate]如何在 Javascript 中说“不在”? [复制]
【发布时间】:2017-11-17 03:23:12
【问题描述】:

我的Javascript代码如下:

addEventListener("keydown", function (e) {
    keysDown[e.keyCode] = true;
}, false);
addEventListener("keyup", function (e) {
    delete keysDown[e.keyCode];
}, false);    
if (81 in keysDown){
    doThisFunction() //q
} 

doThisFunction 将在我按下键盘上的 q 按钮时被调用。 我发现“keysDown 中的 81”这行很有趣。

我想知道是否有办法说“如果 81 不在 keysDown 中”,以便我可以检测到 q 被放开或 q 未被按下的时刻。

提前致谢!

【问题讨论】:

  • if(!keysDown[81])
  • ! 是“不在”,in 是“在”,!(... in ...) 是“不在”。筑巢有那么难吗?
  • 在这种特殊情况下,您应该只做if(keysDown['81'])if(!keysDown['81'])

标签: javascript


【解决方案1】:

是的,您可以将整个条件括在括号中并否定它,如下所示:

if(!(81 in keysDown)) {
    doThisFunction();
}

【讨论】:

    【解决方案2】:

    只需使用negation operator

    if (!(81 in keydown)) …
    

    请注意,您需要额外的 grouping parenthesis 才能获得所需的运算符优先级。

    【讨论】:

      【解决方案3】:

      只需获取索引:

      if(keysDown.indexOf(81) < 0){
          //code
      }
      

      if it is an object:

      if (!(num in keysDown)) { ... }
      

      【讨论】:

        猜你喜欢
        • 2019-12-22
        • 2020-01-15
        • 2014-05-30
        • 2014-10-27
        • 2014-02-28
        • 2014-03-03
        • 2013-12-08
        • 2011-07-17
        • 2015-11-10
        相关资源
        最近更新 更多