parseInt(null, 24) === 23...等等,什么?
好吧,所以我在用parseInt搞砸,看看它如何处理尚未初始化的值,我偶然发现了这个宝石。对于任何基数24或以上,都会发生以下情况。
parseInt(null, 24) === 23 // evaluates to true
我在IE,Chrome和Firefox中测试了它,它们都提醒真实,所以我认为它一定在规范的某个地方。快速的谷歌搜索没有给我任何结果,所以我在这里,希望有人可以解释。
我记得听了Crockford的一次演讲,他说是因为一个疏忽导致Object和Null在内存中具有几乎相同的类型标识符或类似的东西,但我现在找不到那个视频。typeof null === "object"
试试看: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;博士
解释为什么是真实的陈述。parseInt(null, 24) === 23