【问题标题】:JavaScript: Is it allowed to use a `ternary` statement inside an `if` statement? [closed]JavaScript:是否允许在“if”语句中使用“三元”语句? [关闭]
【发布时间】:2016-03-23 07:36:43
【问题描述】:

在以下脚本中,我在if 语句的else if 部分中使用了ternary 语句,将两者并置。在这种情况下,我应该在else if 中替换另一个if 语句吗?

var attackOpt = prompt('Which attack option does Angelo use in this turn?');

// Remaining number of times Angelo can cast spells:
var angMP = 3;


// Validity Check to see if the attack option entered can be executed:
while (true) {

        if (attackOpt === 'slash') {
            break;
        }

        else if (attackOpt === 'magic') {
            (angMP) ?
                 break;
                : attackOpt = prompt('Angelo can no longer cast spells. Select again.');
        }

}

【问题讨论】:

  • 应该吗?这是语义和高度主观的。
  • 您可以在任何允许使用语句的地方使用三元语句,但不能在其中间放置分号 (break;)。
  • 只要它执行没有错误,这取决于你。我个人认为这是非常丑陋的代码。

标签: javascript if-statement ternary-operator


【解决方案1】:

你不能这样做。这将导致语法错误并且代码将无法运行。三元运算符用于在没有 if-else 的情况下快速返回值。不允许休息。但是,您可以在一行中使用类似的内容:

if (angMP) break; else attackOpt = prompt('Angelo can no longer cast spells. Select again.');

甚至是代码其他部分的更简单形式:

if (angMP) break;

【讨论】:

    【解决方案2】:

    是的,您可以在任何允许使用表达式的地方使用三元运算符表达式(它不是语句)。

    三元运算符使用表达式作为其 3 个参数。 break 不是表达式,而是语句。你不能在那里使用break

    您必须使用if 声明。

    【讨论】:

    • 啊,我明白了!代码没有运行,因为我有'BREAK'。在这里,我在想这个错误的原因很可能与“if”和“ternary”的二元性有关。这就是我发布这个问题的原因。看来我是中标了。如果我不问,我的误解就会导致错误的知识。
    • @pourraitpuet-etre 如果对您有帮助,请随意投票和/或接受答案。
    【解决方案3】:

    是的,它会起作用,但它会使代码难以阅读。考虑修改你的“while”循环:

    while (attackOpt !== 'slash' && angMP) {
       attackOpt = prompt('Angelo can no longer cast spells. Select again.');
    }
    

    当然,这是一种风格选择,完全取决于您。

    【讨论】:

      【解决方案4】:

      不需要它会正常工作而没有任何问题

      (angMP) ? break : attackOpt = prompt('Angelo can no longer cast spells. Select again.');
      

      【讨论】:

      • 不需要angMP周围的分组运算符(括号),我认为写angMP? break : ...更符合语义。
      猜你喜欢
      • 2011-08-26
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2014-11-23
      相关资源
      最近更新 更多