Проверка наличия NaN в коде asm.js
Как я могу эффективно проверить в коде asm.js, является ли значение с плавающей точкой NaN?
Принцип, который работает в принципе, это импортировать глобальный isNaN
Функция JavaScript как сторонняя функция в модуле asm.js. Поскольку вызов внешней функции дорог, тем не менее, это не даст оптимального кода.
Сравнивать со значением NaN (которое является частью стандартной библиотеки) невозможно, так как сравнение NaN с другим NaN всегда дает ложь по семантике JavaScript.
Изучение битов в куче также не вариант, потому что не указан порядок байтов.
Почему isNaN
не является частью стандартной библиотеки в asm.js?
2 ответа
Это свойство NaN обычно используется для его идентификации:
var isNaN = a!=a;
Из Википедии:
Предикаты равенства и неравенства не сигнализируют, поэтому x = x, возвращающий false, можно использовать для проверки, является ли x спокойным NaN
if (value !== value) {
// Definitely NaN
}
Вы можете сделать это как функцию, как это
function isNaN(inputValue) {
return inputValue !== inputValue;
}