【问题标题】:Can I omit the else in an inline javascript if statement?我可以省略内联 javascript if 语句中的 else 吗?
【发布时间】:2012-03-03 05:23:54
【问题描述】:

我正在尝试使用它,但它似乎不起作用。我猜这不是一个选择,但想确认一下。这有效吗?

(if_it_is) ? thats_cool();

【问题讨论】:

  • 不,这不是可选的。只要thats_cool() 返回的值等于true,就使用二元运算符 (&&)。
  • 不。它需要有: 和一些跟随它的值。如果你愿意,你可以创建一个名为 do_nothing() 的函数……好吧,什么都不做。
  • user1048967,也就是if() {}
  • @Jonathan 它不必返回布尔值,因为如果if_it_is 评估为真实陈述,它将被调用。
  • @Edwin,这很好。谢谢。

标签: javascript


【解决方案1】:

你可以在那里使用&&

if_it_is && thats_cool();

基本上等于:

if (your_expression){
   thats_cool();
}

【讨论】:

  • 不错。您可以使用或进行空合并。 var 变量 2 = 变量 1 || 'coalesceVal';
  • 这很聪明,但对我来说似乎不是很直观。不好读。一个问号,我明白了。那个,没有。
  • @user1048967:来自其他语言的人觉得很难,但这实际上是你需要学习的 javascript 的美丽和简洁。起初对每个人来说都很奇怪,就像我自己很困惑,但现在有效地使用它。
  • 我仍然很遗憾,除了if(x) return y; 之外,没有其他方法可以内联条件返回语句,因为你不能在其中放置返回语句,也不能在三元表达式中放置。
  • 使用 jshint 它一直说Expected an assignment or function call and instead saw an expression. (W030) source: 'jshint'
【解决方案2】:

您无法使用三元运算符完成此操作,但您可以使用&& 的短路特性来做您想做的事情。

(if_it_is) && thats_cool();

【讨论】:

    【解决方案3】:

    不,你不能。 ?: 是一个三元运算符,必​​须包含所有三个操作数。

    【讨论】:

      【解决方案4】:

      不,你不能。这不是“内联 if 语句”,而是 三元运算符,也就是说,嗯……三元。

      (if_it_is) ? thats_cool() : null;
      

      由于您似乎对操作的返回值不感兴趣,您可以直接写:

      if (if_it_is) thats_cool();
      

      虽然。这也比使用三元组更好。

      【讨论】:

        【解决方案5】:

        你错过了第三个组成部分。应该是这样的:

        (if_it_is) ? thats_cool() : not_too_cool();
        

        整体感觉是:

        condition ? do_something_if_condition_is_true : do_something_if_condition_is_false;
        

        【讨论】:

          【解决方案6】:

          不,它无效。

          条件运算符采用x ? y : z 的形式。第三个操作数不像if 中的else,它必须始终存在。

          【讨论】:

            【解决方案7】:

            您尝试使用的是Ternary Operator。你错过了它的 else 部分。

            你可以这样做:

            (if_it_is) ? thats_cool() : function(){};
            

            (if_it_is) ? thats_cool() : null;
            

            或者,正如其他人所建议的,如果您不关心 else,则可以避免使用三元。

            if_it_is && thats_cool();
            

            在 JavaScript 以及大多数语言中,这些逻辑检查从左到右依次进行。所以它将首先查看if_it_is 是否为'trusy' valuetrue1'' 以外的字符串等)。如果这没有通过,那么它不会执行其余的语句。如果它确实通过了,那么它将执行thats_cool 作为逻辑中的下一个检查。

            将其视为 if 语句中的一部分。没有如果。所以它是一种简写

            if (if_it_is && thats_cool()) { }
            

            【讨论】:

            • 喜欢你的回答。它讲述了一个故事:)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-08-14
            • 1970-01-01
            • 1970-01-01
            • 2017-08-18
            • 2013-06-16
            • 1970-01-01
            • 2017-08-20
            相关资源
            最近更新 更多