parseInt(null, 24) === 23. Почему?

225
26 февраля 2018, 03:07

Каким образом преобразованные в число NaN и 24 трансформировались в 23?

for(var i = 1; i <= 36; i++) 
  console.log(i, parseInt(null, i), parseInt("null", i));

Answer 1

Простое совпадение.

parseInt(null, 24)

означает привести строку "null" (строку потому, что первый параметр, переданный parseInt() всегда конвертируется в строку) в число в системе счисления с основанием 24.

"n" в данном случае - 23 (потому что есть 9 цифр (кроме нуля) и "n" - 14 буква алфавита. 9 + 14 = 23).

"u" - 30. Уже выходит за пределы системы счисления с основанием 24. Поэтому возвращается 23, то есть число, полученное до этого момента.

Иными словами parseInt(null, 24) === parseInt("null", 24) === parseInt("n", 24) === 23.

Отсюда и ответ - 23 === 23 - true.

parseInt(null, m) === 23 всегда даст true, если m находится в пределе от 24 до 30.

Конкретно этот случай интересен лишь тем, что в первый параметр передается null как значение, а не как строка. Это вас и смутило. И null - это, пожалуй, единственное значение в языке, при конвертации в число с основанием 24 которого результат максимально приближен к самому основанию системы счисления.

Каким образом преобразованные в число NaN и 24 трансформировались в 23?

И насчет вот этой части. Это не NaN и 24 "трансформировались", а только null, которое при конвертации в число (с основанием 24+) средствами метода parseInt дает 23.

То есть метод parseInt принимает в качестве первого аргумента то, что нужно сконвертировать, а в качестве второго то, что будет является основанием системы счисления.

Больше о самом методе здесь, о "системах счисления" тут (больше по соответствующему запросу в гугле; посмотрите также именно про "основание системы счисления"), другие ответы на этот вопрос (на английском, правда) здесь.

READ ALSO
Шифрование в JS

Шифрование в JS

Я так предпологаю что этот код расшифровывает строку, но как им можно воспользоваться? Я не особо понимаю в JS, поэтому прошу помощи

196
Вернуть строки из массива

Вернуть строки из массива

Друзья, здравствуйтеСтолкнулся с проблемкой, нужно взять из исходного массива несколько значений и поместить их впереди, при этом вернуть...

220
React: удаление элемента из state родителя

React: удаление элемента из state родителя

Есть список, каждый элемент которого является компонентом (Item)Список строится из state родителя (List)

221
Сортировка массива по названию

Сортировка массива по названию

Есть массивЕго надо отсортировать так, чтоб порядок был следующий: Здравствуйте, Здравствуйте, Привет, Привет, Пока

197