3

レガシースクリプトがあります。これはその一部です:

var e = e ? e : event;

だから、ここでは何も悪いことはありません。しかし、私は主にtooglingのためにternaryを使用します。このように安全に書き直せますか

var e = e || event;

これを使わない理由はありますか?

4

2 に答える 2

5

あなたの例では、それがのようなの値でeない場合に使用されます。それ以外の場合は使用されます。あなたの場合、これは保存する必要があります。false, 0, "", null, undefinedevent

ただし、if-then-else(または3値)の代わりに、より複雑な論理式を使用することには危険が伴います。次に例を示します。

result = value > 10 && getA() || getB()

ガード がANDとvalue > 10評価しての値を返す場合、が返されます。これは、の偽の結果を返すif-then-elseの動作とは異なります。truegetA()getB()getA()

于 2012-12-10T14:17:18.933 に答える
-1

2番目のオプションには注意が必要です。基本的に、「e」がfalse以外の場合は、ローカルの「e」に割り当てられます。それ以外の場合は、「event」を使用しますが、たとえば、 、「e」は「0」です。ローカルの「e」に何を持たせますか?「0」または「イベント」?あなたの場合、あなたのローカルの「e」はとにかく「event」で終わるからです。

于 2012-12-10T14:05:41.013 に答える