parseInt(null, 24) === 23... 等等,什么?
- 论坛
- parseInt(null, 24) === 23... 等等,什么?
10 浏览
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
是正确的陈述。