4

私は最近、期待どおりに機能しないコードを作成しました。それは次のとおりです。

message = 'Thank You';
type = 'success';

message = message || type == 'success' ? 'Success' : 'Error';

その最後に「成功」message​​に設定されたのは私にとってのニュースでした。

trueメッセージの真の価値はであるため、の右側orは評価されないと思います。

ORの右側の括弧はこれを解決しましたが、なぜ右側が評価されたのかまだわかりません

4

2 に答える 2

11

あなたのコードはと同等です

message = ( message || type == 'success' ) ? 'Success' : 'Error';

それが理由です。:)

于 2012-07-03T13:44:02.470 に答える
3

の値はbutにはなりmessageません。"success""Success"

演算子は?演算子よりも優先順位が低い||ため、コードは次のように評価されます。

message = (message || type == 'success') ? 'Success' : 'Error';

の結果はmessage || type == 'success'になり、それが演算子"Thank You"のブール値として評価されると、結果は になります。?true

于 2012-07-03T13:48:47.203 に答える