2015-11-10 6 views
11

const validationに条件に基づいた値を割り当てたいと思います。 this.showError() == true そして、それは'error'するかどう定数を条件付きで割り当てるには、ES6でどのような方法が最適ですか?

this.showRequired() == true 場合、それは他の'required'

でなければなりません。

私はもちろん、それを関数に抽出するか、または3項演算子をカスケードすることができますが、最初はコードが肥大しているように見えますが、後者は醜いです。

良い方法がありますか? If-else式はおそらく?

+0

3進演算子の問題点は何ですか?それらはif-elseのはるかに簡潔な表現*形式です。 – Bergi

+0

IMO構文が少しわかりにくいです。 Scalaのif-else式が好きです。 – Midiparse

+0

@Midiparseこの調整が必要な場合があります。三項演算子はJavascriptで非常に一般的です。オープンソースコードを読んだり、貢献したりする予定がある場合は、それらを一目で理解すると役に立ちます。 – Tyrsius

答えて

23

三項演算子をカスケード接続することは私のために正常に見える:

const validation = this.showRequired() ? 'required' 
        : this.showError() ? 'error' 
        : null 

それとも、代わりに&&||を使用することができます:あなたは、この行が長すぎると思われる場合

const validation = this.showRequired() ? 'required' : this.showError() ? 'error' : null 

、あなたはそれを分割することができ

const validation = (this.showRequired() && 'required') || 
        (this.showError() && 'error') 

このコードをsepaレート機能は、いつでも代わりにさらに別のクラスのメソッドを作成するインライン関数を使用することができます。

const validation = (() => { 
    if (this.showRequired()) { 
    return 'required' 
    } else if (this.showError()) { 
    return 'error' 
    } 
})() 

しかし、三項演算子は、とにかく良く見える、それはいくつかの行に分割されます場合は特に。

関連する問題