Я озадачен, когда использую parseInt из javascript

Когда будет возвращен NaN и когда будет возвращен 0?

console.log(parseInt('3',2)); // NaN

console.log(parseInt('09',8)); // 0


person Robert    schedule 29.01.2021    source источник
comment
parseInt будет анализировать вводимые символы по одному, пока не найдет тот, который не может быть найден, и вернет допустимые символы. 3 не является значением base-2. Поскольку это первый символ, синтаксический анализ завершается. Общее допустимое значение равно нулю. Результат NaN. С 09 он анализирует 0, который является допустимым значением base-8. Эквивалент в десятичной системе равен 0. Тогда 9 не является допустимым значением с основанием 8. Разбор останавливается. Всего действительных проанализированных результатов: 0. Точно так же, если у вас есть parseInt("50 dollars"), результат будет 50 или parseInt("3.50") будет 3 - в обоих случаях берутся действительные числа в начале.   -  person VLAZ    schedule 29.01.2021
comment
parseInt('3',2) — это NaN, потому что 3 не является цифрой в базе 2 (двоичной). Эти цифры в двоичном формате только 0 и 1. ... где as parseInt('13',2) возвращает int 1, потому что, как упоминает @VLAZ, он прекращает анализ следующего недопустимого значения места, в этом случае 3   -  person GetSet    schedule 29.01.2021