关于js 取值计算

上一篇 / 下一篇  2010-05-25 18:55:56 / 个人分类:小知识点

var arr=ipValue.split('.');
var var0=Math.floor(arr[0]);
var var1=Math.floor(arr[1]);
var var2=Math.floor(arr[2]);
var var3=Math.floor(arr[3]);
var res1=var0*16777216+var1*65536+var2*256+var3;
var res2=arr[0]*16777216+arr[1]*65536+arr[2]*256+arr[3];

执行后,结果 :res1 与 res2 不一样,res1 是正确的 , res2 会不正确?

(如:
     输入 :1.1.1.1 ,
     res1=16843009 (正确)
     res2=168430081 (错误!) 

原因:

    arr[3] 的值是字符串,进行'+'时,是字符串链接,arr[0]*16777216+arr[1]*65536+arr[2]*256 中的 * 将 arr[0]*16777216、arr[1]*65536、arr[2]*256 转换为数值类型了,于是 后面的'+' 是数值运算了。将
 var res2=arr[0]*16777216+arr[1]*65536+arr[2]*256+arr[3]; 改为如下内容,就是正确结果了:
var res2=arr[0]*16777216+arr[1]*65536+arr[2]*256+arr[3]*1; 因为arr[3]*1 的结果也是 数值了,可以进行数学运算加了。

 

 


TAG:

 

评分:0

我来说两句

Open Toolbar