2016-03-23 6 views
2

次の関数はブール値を返します。次の&&ステートメントの短いバージョンを返す方法は?

store.checkAuth =() => { 
    return store.state.userInfo.uid && store.state.userInfo.email 
} 

をしかし、それは代わりにboolean型のオブジェクトを返すようにしようとすることを実現:

store.checkAuth =() => { 
    if (store.state.userInfo.uid && store.state.userInfo.email) return true 
    else return false 
} 

私はこのようにそれを簡素化しようとしました。

機能を簡略化する正しい方法は何ですか?

答えて

3

あなたが明示的にブール値への結果を変換することによってそれを行うことができ、

store.checkAuth =() => { 
    return !!(store.state.userInfo.uid && store.state.userInfo.email) 
} 

Documentは、それがfalseに変換できる場合expr1 && expr2実行、

戻り値は、式expr1と言っています。それ以外の場合は、 expr2を返します。したがって、ブール値で使用する場合、& &は、 の両方のオペランドをtrueに変換できる場合はtrueを返します。それ以外の場合はfalseを返します。

この場合、ここでは最初の真理値が返されますが、これは期待しているブール値ではありません。

1

これを試してください。

store.checkAuth =() => { 
    return store.state.userInfo.uid && store.state.userInfo.email ? true : false; 
} 
関連する問題