使用三元运算符代替Javascript中较长的条件语句是否有任何问题,例如使用:
(variable == "dog") ? dog_stuff() : false;
而不是
if ( variable == "dog" )
{
dog_stuff();
}
这听起来像是一个愚蠢的问题,但我发现它非常快速且易于阅读,如果有可能的缺点,我只是不想使用它?
答案 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)
只要您和其他任何可能需要阅读代码的人都能轻松理解该格式,那就没关系。