使用按位运算符和替代算法解析数字

时间:2017-05-18 13:30:36

标签: javascript

我已经看到了将字符串转换为数字的不同解决方案,并希望有一些约定。

我存储了这个技巧:

"55" >> 0

这对于这个小数字可以正常工作,但我们可以采用这个奇怪的具体数字:

"1450088100000" >> 0

,这会产生负面结果

Number("1450088100000")

工作正常。

  1. 是否应该总是使用Number()并忽略这些按位技巧?
  2. 第一个例子与第三个例子相比,是否有任何有价值的用例?
  3. console.log("55" >> 0)
    console.log("1450088100000" >> 0)
    console.log(Number("1450088100000"))

2 个答案:

答案 0 :(得分:1)

你应该总是忽略这些技巧。可以说,在Javascript中将字符串转换为int的正确方法是parseInt。数字函数也是一个不错的选项,但它可以将任何类型的对象转换为数字。

我收集的其他两个是JS中弱类型的人工制品。即使他们按预期工作,我也不会使用它们,因为它们对大多数程序员来说都是不直观的,而且通常看起来像是黑客。

答案 1 :(得分:1)

JavaScript数字始终是浮点数(JavaScript中只有一种数字类型,与大多数语言不同),但有几种方法可以将值强制转换为数字,但工作方式不同:

  • Number(x)parseFloat(x)+x都会将x作为浮点数。
  • parseInt(x)会将x作为整数。
  • x | 0x >> 0会将x作为签名的 32位整数。 (通常,这适用于大多数按位运算符。)
  • x >>> 0会将x作为无符号 32位整数。

我建议您根据自己的要求使用NumberparseFloatparseInt,因为这些要求最为清晰直观。