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