好吧,我在和parseInt打交道,看看它如何处理尚未初始化的值,我偶然发现了这个Ruby .以下情况适用于任何基数为24或以上的情况.
parseInt(null, 24) === 23 // evaluates to true
我在IE、Chrome和Firefox中测试了它,它们都是真的,所以我想它一定在某个地方的规范中.快速的谷歌搜索没有给我任何结果,所以我在这里,希望有人能解释.
我记得听过一次Crockford的演讲,他说typeof null === "object"
是因为一个疏忽导致Object和Null在内存中有一个几乎相同的类型标识符或类似的东西,但我现在找不到那个视频.
试试看:http://jsfiddle.net/robert/txjwP/
Edit Correction: a higher radix returns different results, 32 returns 785077
Edit 2 From zzzzBov: [24...30]:23, 31:714695, 32:785077, 33:859935, 34:939407, 35:1023631, 36:1112745
tl;dr
解释为什么parseInt(null, 24) === 23
是正确的陈述.