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

10 浏览
0 Comments

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

我在测试parseInt时发现了一个有趣的现象,对于任何大于或等于24的基数,下面的情况都会发生:

parseInt(null, 24) === 23 // 结果为true

我在IE、Chrome和Firefox中进行了测试,它们都返回true,所以我认为这应该在规范中有所说明。我快速搜索了一下,但没有找到任何结果,所以我希望有人能够解释一下。

我记得曾经听过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


简而言之

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

0