在javascript中使用按位OR转换为整数

sbr*_*sbr 1 javascript string integer bit-manipulation ecmascript-5

我们可以做以下转换:

var a = "129.13"|0,  // becomes 129

var b = 11.12|0; // becomes 11

var c = "112"|0; // becomes 112
Run Code Online (Sandbox Code Playgroud)

这似乎有效,但不确定这是否是标准的JS功能.有没有人知道这是否可以安全地用于将字符串和小数转换为整数?

I H*_*azy 5

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

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

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

(Math.pow(2, 32) / 2)|0; // -2147483648 (wrong result)
Run Code Online (Sandbox Code Playgroud)