2017-07-25 48 views
0

我要檢查一些運營商的條件和基礎上,我會分配一些值。所以下面是我的情況。運營的JavaScript條件未正常工作所需的

if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft") { 
    VSATSaving.IS_SUBMIT = 0; 
    VSATSaving.STATUS_ID = 1; 
} 

,並在我的checkIfUserRequesterApproverVSAT Requester

還是兩個條件都滿足,並往裏走。如何可能?

+4

我想你需要'(checkIfUserRequesterApprover == 「VSAT審批」 &&(IsDraftOrSave = = 「保存」 || IsDraftOrSave == 「草案」))'由於_Logical AND_超過_Logical OR_具有更高的優先級 – Satpal

+0

我想,遊馬y使用barckets條件 –

+0

後&& @Satpal:讓我試試這個 – BNN

回答

4

看起來像你的if語句應該是 (checkIfUserRequesterApprover == "VSAT Approver" && (IsDraftOrSave == "Save" || IsDraftOrSave == "Draft"))

+0

感謝貝尼,接受你的答案,但原來我是從Satpal .. :) – BNN

+0

對不起,我沒有看到他對你的問題的評論。我們回答您在同一分鐘所以 –

+0

對我來說不是問題。你們倆都很有幫助。無論如何感謝 – BNN

-2

使用括號正確結合的條件。

0

您需要括號內的條件添加到組的表達。

當你寫:

if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft") 

和你checkIfUserRequesterApprover是 'VSAT請求者',則返回false。 由於Java開始評估從左邊的表達,是假的,然後& &第二表達你的第一個表達式,所以前兩個表達式的計算結果始終爲false,這將在隨後||和第三個表達式,這會使你的結果依賴於第三個表達式。
(假& &假||假)=(假||假)=假
(假& &假||真)=(假||真)=真
(假& &真||假)=(假||假)= FALSE
(假& &真||真)=(假||真)=真