-
Вопросы и задачи на собеседованиях 178
-
-
-
-
-
-
-
-
-
-
-
NaN
(Not-a-Number) — это специальное значение в JavaScript, которое указывает на ошибку при выполнении математической операции, не приводящей к числовому результату. Например, деление строки на число или попытка вычислить корень из отрицательного числа могут вернуть NaN
.
console.log(0 / 0); // NaN
console.log(Math.sqrt(-1)); // NaN
console.log(parseInt("abc")); // NaN
Особенности NaN
:
-
NaN
не равно самому себе: Это уникальное поведение, так как в JavaScriptNaN !== NaN
. То есть, проверка на равенствоNaN
с самим собой всегда возвращаетfalse
.console.log(NaN === NaN); // false
-
typeof NaN
возвращает"number"
: Хотя это "не число",NaN
относится к числовому типу.console.log(typeof NaN); // "number"
Как определить, что значение равно NaN
:
-
Функция
isNaN()
: Она проверяет, является ли значениеNaN
. ОднакоisNaN()
также возвращаетtrue
, если значение не может быть преобразовано в число, например, для строк.console.log(isNaN(NaN)); // true console.log(isNaN("abc")); // true
-
Функция
Number.isNaN()
: Этот метод проверяет строгое равенство сNaN
. Он вернётtrue
, только если значение действительно являетсяNaN
, и не будет ошибочно возвращатьtrue
для некорректных строк или других типов данных.console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN("abc")); // false console.log(Number.isNaN(undefined)); // false
Почему важно использовать Number.isNaN()
:
isNaN()
преобразует аргумент к числу, а затем проверяет, является ли результат NaN
. Это может приводить к нежелательным результатам, когда isNaN()
возвращает true
для строк, которые не являются числом. Number.isNaN()
проверяет без приведения типов, что делает его более надёжным для определения реального значения NaN
.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Методы .some()
и .every()
в JavaScript работают с массивами и проверяют элементы на выполнение определенного условия.
.some()
Метод .some()
проверяет, удовлетворяет ли хотя бы один элемент массива условию, заданному функцией. Возвращает true
, если хотя бы один элемент прошел проверку.
const arr = [1, 2, 3, 4, 5];
const result = arr.some(num => num > 3); // true
.every()
Метод .every()
проверяет, удовлетворяют ли все элементы массива условию, заданному функцией. Возвращает true
, если все элементы прошли проверку.
const arr = [1, 2, 3, 4, 5];
const result = arr.every(num => num > 0); // true
Ключевые отличия:
.some()
возвращаетtrue
, если хотя бы один элемент удовлетворяет условию..every()
возвращаетtrue
, если все элементы удовлетворяют условию.