一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Javascript数字大小比较时警惕对象类型

时间:2013-06-09 编辑:简简单单 来源:一聚教程网

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

 代码如下 复制代码

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

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


 代码如下 复制代码

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

 代码如下 复制代码

function getBigger(a,  b){

     return a > b? a:b;

}

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

 代码如下 复制代码










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

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

热门栏目