Хорошо, поэтому я возился с parseInt, чтобы увидеть, как он обрабатывает значения, еще не инициализированные, и я наткнулся на этот камень. Ниже приведено любое основание 24 или выше.
parseInt(null, 24) === 23 // evaluates to true
Я тестировал его в IE, Chrome и Firefox, и все они предупреждают об этом, поэтому я думаю, что он должен быть в спецификации где-то. Быстрый поиск в Google не дал мне никаких результатов, поэтому я здесь, надеюсь, кто-то может объяснить.
Я помню, как слушал речь Крокфорда, где он говорил 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
TL;DR
Объясните, почему parseInt(null, 24) === 23
является истинным утверждением.