三元运算符作为短条件语句

时间:2012-02-21 14:41:44

标签: javascript ternary-operator

使用三元运算符代替Javascript中较长的条件语句是否有任何问题,例如使用:

(variable == "dog") ? dog_stuff() : false;

而不是

if ( variable == "dog" ) 
{
    dog_stuff();
}

这听起来像是一个愚蠢的问题,但我发现它非常快速且易于阅读,如果有可能的缺点,我只是不想使用它?

3 个答案:

答案 0 :(得分:5)

你也可以写

(variable == 'dog') && dog_stuff();

如果你没有else语句。

来自backbone.js的几行:

  options || (options = {});
  models = _.isArray(models) ? models.slice() : [models];
  model = this.getByCid(models[i]) || this.get(models[i]);

如果非常必要,您可以对多个语句进行分组:

(1==1) && (a=2,b=3)
alert(a); // 2
alert(b); // 3

答案 1 :(得分:3)

这是错误的,因为你告诉你的代码执行false。想象一下以下代码:

if ( variable == "dog" ) 
{
    dog_stuff();
} else {
    false;
}

IMO 4行条件函数调用完全没问题。您可以将其缩写为:

if (variable == "dog") dog_stuff();

唯一的问题是如果你将它注释掉,或者再添加一个函数,那么事情看起来是正确的,但是没有正确执行:

if (variable == "dog") dog_walk(); dog_bark(); // dog_bark executes always!
if (variable == "dog") // dog_walk();
earn_cash(); // suddenly earn_cash() is dog-dependent.

答案 2 :(得分:1)

只要您和其他任何可能需要阅读代码的人都能轻松理解该格式,那就没关系。