关于字符串:在javascript中使用按位OR转换为整数

using bitwise OR in javascript to convert to integer

我们可以进行以下转换:

1
2
3
4
5
var a ="129.13"|0,  // becomes 129

var b = 11.12|0; // becomes 11

var c ="112"|0; // becomes 112

这似乎有效,但不确定这是否是标准JS功能。有人知道将字符串和小数转换为整数是否安全吗?


是的,这是标准行为。位运算符只对整数进行操作,因此它们将给定的任何数字转换为有符号的32位整数。

这意味着最大范围是有符号32位整数减去1的范围,即2147483647

1
2
3
(Math.pow(2, 32) / 2 - 1)|0; // 2147483647

(Math.pow(2, 32) / 2)|0; // -2147483648 (wrong result)