javascript - parseInt(null, 24) === 23...等等,什么?

标签 javascript parseint

好的,所以我在搞乱 parseInt 以查看它如何处理尚未初始化的值,我偶然发现了这个 gem。以下情况适用于任何 24 或以上的基数。

parseInt(null, 24) === 23 // evaluates to true

我在 IE、Chrome 和 Firefox 中对其进行了测试,它们都非常正确,所以我认为它一定在规范中的某个地方。快速谷歌搜索没有给我任何结果,所以我在这里,希望有人能解释一下。

我记得听过 Crockford 的演讲,他说 typeof null === "object" 因为疏忽导致 Object 和 Null 在内存中具有几乎相同的类型标识符或类似的东西台词,但我现在找不到那个视频了。

试试看:http://jsfiddle.net/robert/txjwP/

编辑更正:基数越大返回结果不同,32返回785077
编辑 2 来自 zzzzBov:[24...30]:23, 31:714695, 32:785077, 33:859935, 34:939407, 35:1023631, 36:1112745


tl;dr

解释为什么 parseInt(null, 24) === 23 是正确的陈述。

最佳答案

它正在将 null 转换为字符串 "null" 并尝试对其进行转换。对于从 0 到 23 的基数,它没有可以转换的数字,因此它返回 NaN。在 24 处,将第 14 个字母 "n" 添加到数字系统中。在 31 处,添加第 21 个字母 "u",可以解码整个字符串。在 37 上不再有任何可以生成的有效数字集并返回 NaN。

js> parseInt(null, 36)
1112745

>>> reduce(lambda x, y: x * 36 + y, [(string.digits + string.lowercase).index(x) for x in 'null'])
1112745

关于javascript - parseInt(null, 24) === 23...等等,什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459758/

相关文章:

javascript - parseInt 返回 NaN

java - 出现 NumberFormatException 和 parseInt 错误

javascript - Jest iife 模块测试 - 窗口变量未定义

javascript - 为什么我的discord.js 机器人会自行回复,即使我已经存了支票?

javascript - 为什么我需要 parseInt() 来避免 NaN?

javascript - 将 parseInt() 函数和基数参数与三元运算符结合使用

java - 整数解析 int 不起作用

javascript - 用于设备控制的自定义 Thingsboard 小部件 (REST)

javascript - Bluebird 忘记返回警告丢失

javascript - npm启动报错-文件路径找不到json包文件