如何在javascript中正确满足条件“如果”
Posted
技术标签:
【中文标题】如何在javascript中正确满足条件“如果”【英文标题】:How to fulfill the condition correctly "If" in javascript 【发布时间】:2021-08-17 11:37:15 【问题描述】: function UserCheckId()
$.ajax(
type: "POST",
dataType: "json",
url: "/Home/SomeAction",
data: qrcode: scannedQR[txt] ,
dataType: 'json',
success: function (data)
if (data = "Storekeeper")
document.location.replace("/Storekeeper.aspx");
else
alert("Error");
);
有一个 UserCheckId 函数,我在其中从 C# 调用 SomeAction 函数(它返回一个字符串值)并将结果传递给 javascript。之后,我想检查结果的值是多少。如果是“Storekeeper”,则转到该站点,否则会弹出错误。问题是无论值是什么(例如,C# 将返回值“Collector”),Storekeeper 的条件在任何情况下都满足。我用警报检查了数据,它正确输出了字符串值。该怎么办?请帮帮我!
【问题讨论】:
我不明白这一行. The problem is that whatever the value is (for example, C # will return the value "Collector"), the condition for the Storekeeper is met in any case.
=
是一个作业。用于比较使用==
或===
。 assinment 将始终返回分配的值,因为这是非空字符串,在 if
的条件内,它将评估为真值,因此将执行 if 的第一个分支。
做console.log(data)
看看它打印了什么。
@Swati 如果你把它放在if
之前,它将打印data
在if
之前的任何值。如果你把它放在if
之后,它会在if
之后打印Storekeeper
,因为这是data
在条件if(data = "Storekeeper")
中分配的值
【参考方案1】:
要检查 javascript 中的相等性,请使用严格相等运算符===
,它将检查类型和值。在任何比较操作之前也总是标准化(如修剪、toLowerCase 等)
if (data?.trim().toLowerCase() === "storekeeper")
【讨论】:
不确定你为什么使用toLowerCase
,他可能不想接受例如"STOREKEEPER"
.
最好在进行任何比较操作之前进行归一化。像 trim、toLowerCase,这样任何不需要的空格或大写字母都可以处理
不,这不是“更好”。有时可能合适,有时不合适。
不不感谢您的反馈,请保留此信息。
OP 的问题(可能)与值的大小写无关。主要问题是,他使用了赋值(=
)而不是比较(==
或===
)。您应该在回答中提到这一点。 "always normalize ..." 也不是一个有效的假设,因为这可能不适用于所有情况,在这些情况下,人们想要区分 "Storekeeper"
、"storekeeper"
和 "STOREKEEPER"
跨度>
以上是关于如何在javascript中正确满足条件“如果”的主要内容,如果未能解决你的问题,请参考以下文章