這有什麼錯用使用的地方在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