Обновить
1

Пользователь

3
Подписчики
Отправить сообщение

Лично мое мнение, что это просто побочный эффект от преобразований, так как операторами > | >= | <= | < предпологается сравнение только чисел и больше ничего. Поэтому когда мы ими сравниваем:


+[]         // 0
[] >= 0     // true

+null       // 0
null >= 0   // true

+{}         // NaN
({}) >= 0   // false

+undefined      // NaN
undefined >= 0  // false

рантайм вначале берет и преобразовывает все в числа (преобразовывает так, как эти самые преобразования прописаны для каждого типа), потом сравнивает и выдает нам результат которому мы удивляемся.


Операторы == | === | != | !== в свою очередь предназначены для различных типов, поэтому преобразований не происходит:


null != 0    // true
null !== 0  // true
Linux, PostgreSQL, NodeJS, Java — нет?

NodeJS и Java (да и Линукс то же) без портирования на эльбрусах не заработают.

Раз портировали, значит способны в принципе самостоятельно поддерживать их для себя (в части бакендов, платформозависимой части, во фронтендах не требуется).

Так что тут вполне себе замещение.
NaN — это псевдочисло, любые арифметические операции с которымм всегда возвращают NaN, а операции сравнения всегда возвращают false.
Что бы проверить NaN на NaN, надо использовать функцию «isNaN()»:
let x = 1 * undefined; // NaN

isNaN(x); // true

(x.toString() === "NaN"); // true
12 ...
17

Информация

В рейтинге
7 434-й
Зарегистрирован
Активность