> Как реализовать функцию isNaN без использования Object.is в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Инити

Стек: JavaScript

> Пример ответа

Встроенная функция isNaN имеет известную проблему: она сначала преобразует аргумент в число, поэтому isNaN("строка") вернёт true, хотя строка - не NaN. Чтобы реализовать корректную проверку без Object.is, нужно учитывать, что NaN - единственное значение в JavaScript, которое не равно самому себе.

Вот простая реализация:

JAVASCRIPT
function myIsNaN(value) {
return typeof value === 'number' && value !== value;
}

Пояснение:

  1. typeof value === 'number - отсекает нечисловые типы (строки, объекты и т.д.), чтобы избежать ложных срабатываний.

  2. value !== value - сработает только для NaN, так как это единственное значение, для которого это условие истинно.

Примеры работы:

JAVASCRIPT
myIsNaN(NaN) // true
myIsNaN(123) // false
myIsNaN("abc") // false (в отличие от глобальной isNaN)
myIsNaN(undefined) // false
myIsNaN({}) // false

Эта реализация полностью соответствует поведению Number.isNaN, которое считается более надёжным, чем глобальная isNaN.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью