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

873次阅读  |  发布于5年以前

今天看到某大牛之前写的某段代码里,用到了"| 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",后面的事情应该都知道的。

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

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8