max) { //Doesn't execute } 既然-6ren">
gpt4 book ai didi

javascript - 有趣的 JavaScript 怪癖

转载 作者:行者123 更新时间:2023-11-28 13:59:08 25 4
gpt4 key购买 nike

我有以下 if 语句:

RG 为“100”,最大值为“85”

if (RG == "" | RG > max) {
//Doesn't execute
}

既然 RG 不是“”并且 RG 大于 max,为什么代码不执行?我相信运算符(operator)短路了(因此只有一根管道|),但改变它并没有任何区别。我的猜测是它正在比较文字字符串 - 那么我如何强制 javascript 将它们视为 float ?

需要明确的是,我需要检查 OR 的两个部分,并且仅当其中一个为 true 时才执行。

最佳答案

I believed the operator was short circuiting (hence only the one pipe |) but changing it didn't make any difference

我认为它最初看起来像这样:

if (RG == "" || RG > max) {
//Doesn't execute
}

我们可以忽略第一部分,因为它是假的,所以你的问题是为什么 RG > max 不是 true?答案是,按照字符串排序顺序,“100”位于“85”之前。字符串不是数字,您不能对它们进行数字比较。

如果你希望它们像你所说的那样是 float ,你可以通过 parseFloat (或 parseInt 因为它们看起来像整数,但你说 float ,所以...):

if (RG == "" || parseFloat(RG) > parseFloat(max)) {
//Doesn't execute
}

我已经在那里内联完成了它,但是您想要早点完成并将结果分配给变量的可能性似乎很高,除非这确实是您将值用作数字的唯一地方。

关于javascript - 有趣的 JavaScript 怪癖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423048/

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