gpt4 book ai didi

javascript - 逻辑运算符 ||不知何故没有给出预期的结果

转载 作者:行者123 更新时间:2023-11-30 13:51:52 24 4
gpt4 key购买 nike

我有这个变量,如果某些东西可以被编辑或看起来不像这样,它会切换

enabled: !(parseInt("@Model.Status") === @((int)Status.Active) ||
!(parseInt("@Model.Status") === @((int)Status.Expired)) && '@Model.EditMode' === 'True'),

出于某种原因,如果这适用于状态为 active 而不是 expired 的状态,如果我将其转过来并将 expired 放在第一位适用于 expired 但不适用于 active ....所以我在这里错了有人认为如果状态是 ExpiredActive enabled 应该是 false 这样它就不能被编辑所有其他状态应该没问题。

我也试过这样写,第二条语句用括号括起来

!((parseInt("@Model.Status") === @((int)Status.Expired))

像这样反转 if 但都没有解决它

 (parseInt("@Model.Status") !== @((int)Status.Expired)

Pointy 的精彩评论!但不幸的是,这也不是这里的问题,因为即使我跳过整个 && 运算符,我仍然遇到同样的问题

 !(parseInt("@Model.Status") === @((int)Status.Active) || !(parseInt("@Model.Status") === @((int)Status.Expired)))

还是一样的问题

最佳答案

你的条件好像不对。 !(parseInt("@Model.Status") === @((int)Status.Active) || !(parseInt("@Model.Status") === @((int)Status.Expired )) && '@Model.EditMode' === '真')

可以看作是 !(a || !(b) && c) 其中

a = parseInt("@Model.Status") === @((int)Status.Active)
b = parseInt("@Model.Status") === @((int)Status.Expired)
c = '@Model.EditMode' === 'True'

AND 运算符 (&&) 比 || 具有更高的优先级,因此实际的评估顺序可以使用分组显示为 !(a || ( !(b) && c))2 + 3 * 4 计算为 2 + (3 * 4) 的方式相同。

但是,呈现的逻辑与要求不符。状态应该是“事件”或“已过期”以外的任何内容, 编辑模式应该是“True”。然而,括号不匹配可能是由于打字错误造成的,因为整个逻辑表达式被否定,而且第二个条件也被否定,但它不应该被否定。

正确的逻辑表达式是!(a || b) && c。替换逻辑测试:

!(parseInt("@Model.Status") === @((int)Status.Active) || parseInt("@Model.Status") === @((int)Status.Expired) &&
'@Model.EditMode' === 'True'

我不熟悉 Kendo,但如果可以使用 !== 则可以通过删除一些括号来简化表达式。根据De Morgan's laws !(a || b) 等同于 !a && !b,因此如果我们执行该替换,我们将得到 !a && !b && c。如果我们也从 !(parseInt("@Model.Status") === @((int)Status.Active)) 更改为 parseInt("@Model.Status") ! == @((int)Status.Active) 然后我们得到:

parseInt("@Model.Status") !== @((int)Status.Active) && 
parseInt("@Model.Status") !== @((int)Status.Expired) &&
'@Model.EditMode' === 'True'

关于javascript - 逻辑运算符 ||不知何故没有给出预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com