什么是惯用的表演方式;整数;javascript中的转换/类型转换?

什么是惯用的表演方式;整数;javascript中的转换/类型转换?,javascript,integer,idioms,Javascript,Integer,Idioms,询问Javascript中代码片段a>>>0的含义。事实证明,这是一种确保变量为无符号32位整数的聪明方法 这很整洁,但我不喜欢它有两个原因 这个表达的意图并不清楚,至少对我来说不清楚 它不适用于负数 这让我不禁要问:在Javascript中将任意值转换为“整数”的最惯用方法是什么?它应该适用于有符号整数,而不仅仅是非负数。在Javascript中,由于整数只是伪装成浮点数而中断的情况是可以接受的,但应该得到承认。在任何情况下,它都不应返回undefined或NaN(这些不是整数),而应返回

询问Javascript中代码片段
a>>>0
的含义。事实证明,这是一种确保变量为无符号32位整数的聪明方法

这很整洁,但我不喜欢它有两个原因

  • 这个表达的意图并不清楚,至少对我来说不清楚
  • 它不适用于负数
这让我不禁要问:在Javascript中将任意值转换为“整数”的最惯用方法是什么?它应该适用于有符号整数,而不仅仅是非负数。在Javascript中,由于整数只是伪装成浮点数而中断的情况是可以接受的,但应该得到承认。在任何情况下,它都不应返回
undefined
NaN
(这些不是整数),而应返回
0
非数值。

是“最惯用”的方式,因为它准确地描述了您希望它做的事情。
parseInt
的缺点是,如果输入非数字字符串,它将返回
NaN

另一种方法是按0进行位ORing(
|0
),它也适用于负数。此外,当对非数字字符串使用它时,它返回
0
。另一个优点是,当在实数上使用它时,它比parseInt快一点;给它喂线时速度较慢

  • 12.4|0
    输出
    12
  • -12.4|0
    输出
    -12
  • “12.4”| 0
    输出
    12
  • “非数字”| 0
    输出
    0

它不能完全满足我的要求
parseInt(“不是int,该死的”)
返回
NaN
。他提到的
|0
几乎可以满足您的需要:字符串是0,
true
是1,
28.3
是28,
-28.3
是-28,NaN(如
(+“foo”)| 0
)是0,
未定义的
是0。我错过什么了吗?