关于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: