javascript学习指南|Javascript数字大小比较时警惕对象类型

更新时间:2018-02-19    来源:js教程    手机版     字体:

【www.bbyears.com--js教程】

通过js获取页面两个数字输入框的值,并对其进行大小比较。此时出来的结果可能让你迷惑不解,例如代码:

 代码如下

var v1 = $("#input1").val();
var v2 = $("#input2").val();
alert(v1 > v2);

假如input1中输入10,input2中输入2。10肯定是大于2的,所以上面的alert框应该弹出true,但实际上给出的是false。原因何在?对应数字10大于2是毫无疑问的,如果是作为字符串比较,那么结果刚好相反。而上述从页面获取值得到的类型是String。


 代码如下

<script>
   alert( "120" > "40");   //false, 因为 1<4
   alert( 120 > 40.00); //true
</script>

 
在js脚本中, 有时候需要比较两个值的大小, 并且这两个值都是数字,
 

 代码如下

function getBigger(a,  b){

     return a > b? a:b;

}

如果明确是要进行数字比较,则需要显示的转化为数字,例如使用parseInt、parseFloat;还有一种方法是使用减法运算符,如:v1 – v2 > 0,此时js在运算前内部会进行类型转换。

 代码如下



<script language="javascript">
function compare()...{
if(parseInt(document.form1.a.value) < parseInt(document.form1.b.value))...{
alert("a }else...{
alert("a>b");
}

}
</script>






parseInt ( cString )从字符串cString非空字符开始转换得到的整数,遇到小数点或其他0-9外的字符就停止,如“-1234a”,“-1234.0”都将返回-1234;如果除第一个符号外一个0-9字符都不是,将返回NaN,如“-a”、“abc”等;

另外由于加法运算符同时支持数字和字符串,使用这个时候也要小心。例如 a + b ,如果其中一个是字符串类型,一个是数字类型,在执行运算前会把另外一个转化为字符串类型,所以实际是进行字符串链接操作,而不是想要的算术运算。在确定是要做算术运算的情况下,对于未知类型的参数,保险的情况下还是使用parseInt进行类型转换。

本文来源:http://www.bbyears.com/wangyezhizuo/39358.html