JavaScript IF语句错误地评估TRUE - 为什么?

时间:2013-06-05 22:26:25

标签: javascript html dom if-statement logic

我对客户购买的许可证数量与他们使用的数量进行了非常非常简单的逻辑测试:

else if(utype == "3"){
           var tech_lic = $("#technician_lic").val();
           console.log('tech lic = ' + tech_lic)
           var tech_allow = $("#technician_lic_allow").val();
           console.log('tech allow = ' + tech_allow)
           if(tech_lic >= tech_allow)
            {
              alert("You must purchase more licenses to create this Technician");
              return false;
            }

我投入了试图调试它的console.log语句 - 通常它们不存在。

单击“添加”按钮时的Console.log:

tech lic = 4    application.js:262
tech allow = 100    application.js:264

然后我们在窗口中点击“您必须购买更多许可证”提醒。

怎么回事?

4> = 100如何评估为真?

5 个答案:

答案 0 :(得分:7)

因为.val返回一个字符串。 '4'确实大于或等于'100'。首先将值转换为数字(如果您知道它们总是用于此比较的数字)。

if (+tech_lic >= +tech_allow)

答案 1 :(得分:3)

您正在将它们评估为字符串,因此“4”大于“100”。

在比较之前,您需要将它们作为整数投射:

var tech_lic = parseInt($("#technician_lic").val(), 10);
var tech_allow = parseInt($("#technician_lic_allow").val(), 10);

答案 2 :(得分:1)

字符串“4”大于“100”,而数字4小于100。

答案 3 :(得分:1)

不是4 >= 100是真的,"4" >= "100"是真的。

您获得的值是字符串,因此它们将在词汇上进行比较,而不是数字。

将值解析为数字:

var tech_lic = parseInt($("#technician_lic").val(), 10);
var tech_allow = parseInt($("#technician_lic_allow").val(), 10);

答案 4 :(得分:0)

这样做: -

if(Number(tech_lic) >= Number(tech_allow))
{
   // Do your stuff
}