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

带void的return语句实现了什么?

  •  2
  • user1059939  · 技术社区  · 4 年前

    我正在把一个缩小的游戏从网页档案改成打字脚本。我有以下功能。

    const C = (command: KnownMovementKeySet) => {
      if (
        3 == game.myType &&
        ("STRAFELEFT" === command || "STRAFERIGHT" === command)
      ) {
        return C("SPECIAL"), void C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
      }
      if (-1 !== x.indexOf(command)) {
        Network.sendKey(command, true);
      }
    };
    

    1 回复  |  直到 4 年前
        1
  •  1
  •   CertainPerformance    4 年前

    void <someExpression> 计算结果为 undefined ,逗号运算符从左到右求值并得出最终表达式的值。所以呢

    return C("SPECIAL"), void C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
    

    相当于

    C("SPECIAL");
    return void C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
    
    C("SPECIAL");
    C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
    return undefined;
    
    C("SPECIAL");
    C("STRAFELEFT" === command ? "LEFT" : "RIGHT");
    return;