[小Tip]JavaScript转整数杯具两则

今天看到某大牛之前写的某段代码里,用到了"| 0"这种写法将字符串取整。这本来没什么,很多人都这样做,但他那段代码里处理的是一个时间戳。如:

"1325239449538" | 0;

结果是-1905444926,这显然不是我们想要的。这个问题产生的原因是:A | B是将A、B先ToInt32再运算,返回结果是32位符号型整数。只要A超过2147483647,也就是231-1,就杯具了。

另一个常用的parseInt函数也容易发生杯具,如:

parseInt(0.0000001);

在大部分浏览器上,结果是1(新版firefox会得到0),这也显然不符合预期。原因是parseInt(A)第一步会执行ToString(A)。上面的例子中,0.0000001会转成"1e-7",后面的事情应该都知道的。

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 1802 天前,文中所描述的信息可能已发生改变,请谨慎使用。

专题「JavaScript 漫谈」的其他文章 »

Comments