Another question 询问了Javascript中代码段a >>> 0
的含义。事实证明,这是一种确保变量是无符号32位整数的聪明方法。
这很漂亮,但我不喜欢它有两个原因。
这让我想问:在Javascript中将任意值转换为“整数”的最惯用方法是什么?它应该适用于有符号整数,而不仅仅是非负数。由于整数只是在Javascript中伪装成浮点这一事实导致的这种情况是可以接受的,但是应该被承认。它不应该在任何情况下返回undefined
或NaN
(这些不是整数),而是返回0
非数字值。
答案 0 :(得分:4)
parseInt
是“最惯用”的方式,因为它准确地描述了您希望它做什么。 parseInt
的缺点是,如果输入非数字字符串,则返回NaN
。
另一种方法是逐位ORing 0(| 0
),这也适用于负数。此外,它在非数字字符串上使用时返回0
。另一个优点是,在实数上使用时,它比parseInt
快一点;喂它时它会慢一些。
12.4 | 0
输出12
-12.4 | 0
输出-12
"12.4" | 0
输出12
"not a number" | 0
输出0