JavaScript - функция isNaN( ) иногда "противоречит" значению NaN
Всем привет, в одной статье про преобразования типов в JavaScript я прочитал такую информацию:
"Для преобразования строки в целое число применяется функция parseInt( ).
Строка может иметь смешанное содержимое, например "123hello", то есть в данном случае есть цифры, но есть и обычные символы. Функция parseInt( ) все равно попытается выполнить преобразование - она последовательно, начиная с первого символа, считывает цифры, пока не встретит первый нецифровой символ.
Если функции parseInt( ) не удастся выполнить преобразование, то она возвращает значение NaN ("Not a Number", "не число"), которое говорит о том, что строка не представляет число и не может быть преобразована. Что интересно, само значение NaN представляет тип number.
С помощью специальной функции isNaN( ) можно проверить, представляет ли строка число. Если строка не является числом, то функция возвращает true, если это число - то false."
Рассмотрим примеры:
// Пример 1
const number1 = "56";
const result1 = parseInt(number1);
console.log(result1); // 56
console.log(typeof result1); // number
console.log(isNaN(number1)); // false
// Пример 2
const number2 = "123hello";
const result2 = parseInt(number2);
console.log(result2); // 123
console.log(typeof result2); // number
console.log(isNaN(number2)); // true
// Пример 3
const number3 = "hello";
const result3 = parseInt(number3);
console.log(result3); // NaN
console.log(typeof result3); // number
console.log(isNaN(number3)); // true
Мне здесь не понятен Пример 2, а именно строчка:
console.log(isNaN(number2)); // true
я почему-то ожидал тут увидеть значение false
. Я рассуждаю так: если isNaN(number2)
это true
, т.е. данная строка не является числом, то логично, что parseInt(number2)
должно возвращать значение NaN
("не число"). Но раз уж разработчики языка сделали так, что "функция последовательно считывает цифры, пока не встретит первый нецифровой символ", то может тогда логичнее было бы isNaN(number2)
возвращать как false
?
Или может быть я зря ожидаю некой взаимосвязи между функцией isNaN( )
и значением NaN
. Подскажите, где я мыслю неверно?