繁体   English   中英

比较数字时的奇怪行为

[英]Strange behavior when comparing numbers

因此,我正在编写一个测试子字符串的函数,显然它告诉我1到3大于13,这是我正在使用的代码:

var highlight = function(first,last,whichsub){
  var text = $(".output2").text();
  if(whichsub === "substring"){
    text = text.substring(0,first)+"<color style='background:#0763D3'>"+text.substring(first,last)+"</color>"+text.substring(last);
  }else if(whichsub === "substr"){
    text = text.substr(0,first)+"<color style='background:#0763D3'>"+text.substr(first,last)+"</color>"+text.substr(last);
  }
  //console.log(text);
  console.log(first+" "+last);
  if(first > last){console.log("true");} // is printing true
  $(".output2").html(text);
};

我对JavaScript没有任何经验,但是我仍然不明白是什么原因引起的。

有人知道我哪里出问题了吗? 谢谢!

啊,我在写完问题的时候就发现了问题,但我想也要在这里发布正确的答案/原因。

console.log具有误导性。 这是在告诉我3 > 13 ,这显然是错误的,但是假设我们将"3""13"视为STRING而不是整数,则碰巧计算为true。 这就是我出错的地方,比较了错误的数据类型。

我从一个input[type=number].val()插入了一个值,我刚刚input[type=number].val()它返回了一个数字,但是是错误的。 .val()一起使用时,数字输入返回一个字符串。

var parsedF = parseInt(first)var parsedL = parseInt(last)按预期工作。

希望这可以帮助某人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM