【问题标题】:What is the idiomatic way of performing an "integer " conversion/typecast in javascript?在javascript中执行“整数”转换/类型转换的惯用方式是什么?
【发布时间】:2011-03-06 07:31:24
【问题描述】:

Another question 询问 Javascript 中代码 sn -p a >>> 0 的含义。事实证明,这是一种确保变量为无符号 32 位整数的巧妙方法。

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

  • 表达的意图不清楚,至少对我来说不是。
  • 它不适用于负数

这让我问:在 Javascript 中将任意值转换为“整数”的最惯用的方法是什么?它应该适用于有符号整数,而不仅仅是非负数。由于整数只是 Javascript 中伪装的浮点数而导致中断的情况是可以接受的,但应该得到承认。在任何情况下它都不应该返回undefinedNaN(这些不是整数),而是为非数字值返回0

【问题讨论】:

    标签: javascript integer idioms


    【解决方案1】:

    parseInt 是“最惯用的”方式,因为它准确地描述了您想要它做什么。 parseInt 的缺点是,如果您输入非数字字符串,它会返回 NaN

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

    • 12.4 | 0 输出 12
    • -12.4 | 0 输出 -12
    • "12.4" | 0 输出 12
    • "not a number" | 0 输出 0

    【讨论】:

    • 它并不完全符合我的要求。 parseInt("not an int, damnit") 返回NaN
    • 他提到的|0 确实可以满足您的要求:字符串为0,true 为1,28.3 为28,-28.3 为-28,NaN(例如(+"foo")|0) 是 0,undefined 是 0。我错过了什么吗?
    猜你喜欢
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2019-01-15
    • 2019-04-06
    相关资源
    最近更新 更多