> Как реализовать функцию isNaN без использования Object.is в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Инити
Стек: JavaScript
> Пример ответа
Встроенная функция isNaN имеет известную проблему: она сначала преобразует аргумент в число, поэтому isNaN("строка") вернёт true, хотя строка - не NaN. Чтобы реализовать корректную проверку без Object.is, нужно учитывать, что NaN - единственное значение в JavaScript, которое не равно самому себе.
Вот простая реализация:
JAVASCRIPTfunction myIsNaN(value) {return typeof value === 'number' && value !== value;}
Пояснение:
-
typeof value === 'number- отсекает нечисловые типы (строки, объекты и т.д.), чтобы избежать ложных срабатываний. -
value !== value- сработает только дляNaN, так как это единственное значение, для которого это условие истинно.
Примеры работы:
JAVASCRIPTmyIsNaN(NaN) // truemyIsNaN(123) // falsemyIsNaN("abc") // false (в отличие от глобальной isNaN)myIsNaN(undefined) // falsemyIsNaN({}) // false
Эта реализация полностью соответствует поведению Number.isNaN, которое считается более надёжным, чем глобальная isNaN.
> Похожие задачи по frontend
Какие элементы и в каком порядке хранятся в результирующем массиве в JavaScript
Как сделать функцию вызываемой через точку в JavaScript
Какие микротаски кроме Promise существуют в JavaScript?
Откуда у примитивной строки в JavaScript появляются методы, например toUpperCase?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью