我可以在内联javascript if语句中省略else吗?

时间:2012-02-10 18:33:54

标签: javascript

我正在尝试使用此功能,但似乎无法正常工作。我猜它不是一个选项,但想确认一下。这有效吗?

(if_it_is) ? thats_cool();

7 个答案:

答案 0 :(得分:31)

您可以在那里使用&&

if_it_is && thats_cool();

它基本上等于:

if (your_expression){
   thats_cool();
}

答案 1 :(得分:4)

不,它无效。

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

答案 2 :(得分:2)

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

您可以执行以下操作:

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

(if_it_is) ? thats_cool() : null;

或者,正如其他人所建议的那样,如果你不关心别人,你就可以避免三元。

if_it_is && thats_cool();

在JavaScript和大多数语言中,这些逻辑检查从左到右逐步进行。因此,它首先会看到if_it_is'trusy' valuetrue1,是否为''以外的字符串,等等。如果没有通过那么它不会执行声明的其余部分。如果它确实通过,那么它将执行thats_cool作为逻辑中的下一个检查。

将其视为if语句中的一部分。没有if。

这是一种简写
if (if_it_is && thats_cool()) { }

答案 3 :(得分:1)

使用三元运算符无法实现这一点,但可以使用&&的短路特性来做你想做的事。

(if_it_is) && thats_cool();

答案 4 :(得分:1)

不,你不能。它不是“内联if语句”,它是三元运算符,那就是......三元组。

(if_it_is) ? thats_cool() : null;

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

if (if_it_is) thats_cool();

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

整个意义是:

condition ? do_something_if_condition_is_true : do_something_if_condition_is_false;