好的,我在玩parseInt时想看看它如何处理尚未初始化的值,然后我偶然发现了这个宝石。以下情况适用于任何24或更高进制。
parseInt(null, 24) === 23 // evaluates to 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
是一个真实的陈述。
alert(parseInt(null, 34) === 23)
产生了false
。 - Stephen Pundefined
作为第一个参数返回30年代的奇怪结果。 - zzzzBov