好了,所以我在弄乱parseInt看看它如何处理尚未初始化的值,我偶然发现了这个gem。对于基数为24或更高的基数,将发生以下情况。
parseInt(null, 24) === 23 // evaluates to true
我在IE,Chrome和Firefox中对其进行了测试,它们都警告为true,因此我认为它必须在某个地方的规范中。快速的Google搜索没有给我任何结果,所以我在这里,希望有人可以解释。
我记得我听过克罗克福德的讲话,是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; dr
解释为什么parseInt(null, 24) === 23
是真实的陈述。
alert(parseInt(null, 34) === 23)
产生false
alert(parseInt(null,26)===23);
也产生真实的?!?!
[24...30]:23
,31:714695
,32:785077
,33:859935
,34:939407
,35:1023631
,36:1112745
,[37...]:NaN
undefined
由于第一个参数返回30的奇数结果