不按要求工作的操作的JavaScript条件

不按要求工作的操作的JavaScript条件,javascript,Javascript,我想检查一些运算符条件,并在此基础上分配一些值。下面是我的情况 if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft") { VSATSaving.IS_SUBMIT = 0; VSATSaving.STATUS_ID = 1; } 在我的checkIfUserRequesterApproverisVSAT

我想检查一些运算符条件,并在此基础上分配一些值。下面是我的情况

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

不过,这两个条件都是令人满意的,而且都进入了室内。这怎么可能


使用括号可正确组合条件。

使用括号可正确组合条件。

看起来您的if表达式应该是
(checkIfUserRequesterApprover==“VSAT Approver”&&(IsDraftOrSave==“Save”| | IsDraftOrSave==“Draft”)

看起来像是您的if表达式应该是
(checkIfUserRequesterApprover==“VSAT Approver”&&&(IsDraftOrSave==“Save”| | IsDraftOrSave==“Draft”)

您需要添加括号来对条件中的表达式进行分组

if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft") {
    VSATSaving.IS_SUBMIT = 0;
    VSATSaving.STATUS_ID = 1;
}
当你写作时:

 if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft")
如果您的checkIfUserRequesterApprover为“VSAT请求者”,则返回false。 由于Java从左侧开始计算表达式,并且第一个表达式后跟&&第二个表达式,因此前两个表达式的计算结果将始终为false,后面跟着| |和第三个表达式,这将使您的结果依赖于第三个表达式。
(假和假| |假)=(假| |假)=假
(假与假| |真)=(假| |真)=真
(假与真| |假)=(假| |假)=假

(false&&true | | | true)=(false | | true)=true

您需要添加括号来对条件中的表达式进行分组

if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft") {
    VSATSaving.IS_SUBMIT = 0;
    VSATSaving.STATUS_ID = 1;
}
当你写作时:

 if (checkIfUserRequesterApprover == "VSAT Approver" && IsDraftOrSave == "Save" || IsDraftOrSave == "Draft")
如果您的checkIfUserRequesterApprover为“VSAT请求者”,则返回false。 由于Java从左侧开始计算表达式,并且第一个表达式后跟&&第二个表达式,因此前两个表达式的计算结果将始终为false,后面跟着| |和第三个表达式,这将使您的结果依赖于第三个表达式。
(假和假| |假)=(假| |假)=假
(假与假| |真)=(假| |真)=真
(假与真| |假)=(假| |假)=假

(false&&true | | true)=(false | | true)=true

我认为您需要
(checkIfUserRequesterApprover==“VSAT Approver”&&(IsDraftOrSave==“Save”| IsDraftOrSave==“Draft”)
由于逻辑和逻辑的优先级高于逻辑或思考,您可以在&&condition@Satpal字体让我试试看this@Satpal:谢谢satpal,它起作用了。不知道为什么。但是confused@VVVV这是由于优先规则。这就是你的条件不能正常工作的原因。我认为你需要
(checkIfUserRequesterApprover==“VSAT Approver”&&(IsDraftOrSave==“Save”| | IsDraftOrSave==“Draft”)
因为逻辑和逻辑的优先级高于逻辑和逻辑的优先级,你可以在&&condition@Satpal字体让我试试看this@Satpal:谢谢satpal,它起作用了。不知道为什么。但是confused@VVVV这是由于优先规则。这就是为什么你的情况不正常。谢谢beni,接受了你的答案,但我从Satpal那里得到的原始答案:)对不起,我没有看到他对你问题的评论。。我们同时回答了你,否则对我来说不是问题。。你们两个都很有帮助。不管怎样,谢谢你,很高兴我们能帮上忙谢谢贝尼,接受了你的回答,但是我从萨帕尔那里得到的原始答案:)对不起,我没有看到他对你问题的评论。。我们同时回答了你,否则对我来说不是问题。。你们两个都很有帮助。无论如何,谢谢你,很高兴我们能帮忙