比较数字时的奇怪行为

时间:2015-08-01 22:44:43

标签: javascript comparison

所以我正在编写一个函数来测试子字符串,显然它告诉我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没有任何经验,但我仍然无法理解可能导致这种情况的原因。

有谁知道我哪里出错了?谢谢!

1 个答案:

答案 0 :(得分:0)

啊,我在写完问题时想出了问题,但想到我也会在这里发布正确答案/为什么会发生......

console.log具有误导性。它告诉我3 > 13,这显然是错误的,但恰好评估为true,假设我们将"3""13"称为 STRING ,而不是整数。那是我出错的地方,比较错误的数据类型。

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

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

希望这有助于某人!