这有什么错用使用的地方在Javascript较长条件语句三元运营商,例如:三元运营商短条件语句
(variable == "dog") ? dog_stuff() : false;
不是
if (variable == "dog")
{
dog_stuff();
}
这听起来像一个愚蠢的问题,但我发现它非常快速和容易阅读,我只是不想使用它,如果有可能的缺点?
这有什么错用使用的地方在Javascript较长条件语句三元运营商,例如:三元运营商短条件语句
(variable == "dog") ? dog_stuff() : false;
不是
if (variable == "dog")
{
dog_stuff();
}
这听起来像一个愚蠢的问题,但我发现它非常快速和容易阅读,我只是不想使用它,如果有可能的缺点?
你也可以写
(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。它可能缩短10个字符,但最好是写出清晰简洁的代码,而不是过于聪明的代码。 – Stephen 2012-02-21 15:44:09
这是错误的,因为你告诉你的代码执行false
。想象下面的代码:
if (variable == "dog")
{
dog_stuff();
} else {
false;
}
IMO 4行条件函数调用是完全正常的。你可以把它简写:
if (variable == "dog") dog_stuff();
与此唯一的问题是,如果你把它注释掉,或添加1更多的功能,那么事情看起来是正确的,但不能正确执行:
if (variable == "dog") dog_walk(); dog_bark(); // dog_bark executes always!
if (variable == "dog") // dog_walk();
earn_cash(); // suddenly earn_cash() is dog-dependent.
有注意使用三元运算符错误 – 2012-02-21 14:44:11
@Michael,“?”左边的操作数是有条件的,并且不会将任何回传给它。整个结构'一个? b:c'是一个表达式。它在这种情况下看起来很奇怪,因为它正在评估其副作用,并且它的返回值被丢弃。 – 2012-02-21 18:09:28
@IanClelland是的,我的评论没有任何意义,因为我的眼睛看到'(variable ==“dog”)''在'='左边。删除不久... – 2012-02-21 18:15:35