2016-03-23 72 views
2

下面的函數返回一個布爾值:如何返回以下&&陳述的簡短版本?

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

我試圖簡化它是這樣的:

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

但意識到它試圖返回的對象,而不是一個布爾值。

什麼是簡化功能的正確方法?

回答

3

您可以通過顯式轉換的結果爲布爾做到這一點,

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

Document說,當expr1 && expr2執行,

將返回EXPR1是否可以轉換爲false;否則,返回 expr2。因此,當與布爾值一起使用時,如果兩個 操作數都可以轉換爲true,則& &返回true;否則,返回false。

因此,在我們的例子中,第一個真值不會返回您期望的布爾結果。

1

試試這個。

store.checkAuth =() => { 
    return store.state.userInfo.uid && store.state.userInfo.email ? true : false; 
}