Comprobando a NANS en el código ASM.JS
-
21-12-2019 - |
Pregunta
¿Cómo puedo registrar de manera eficiente el código ASM.JS si un valor de punto flotante es un nan?
Una forma que funciona en principio es importar la función global de JavaScript Javascript como una función extraña en el módulo ASM.JS.Sin embargo, a medida que la función de llamada extranjera es costosa, por lo que esto no producirá un código óptimo.
Comparando con el valor NAN (que forma parte de la biblioteca estándar) no es una opción porque la comparación de una NAN a otra NAN siempre se produce False por la semántica de JavaScript.
Los bits de examen en el montón tampoco son ninguna opción porque la endiaisa no está especificada.
¿Por qué es isNaN
no parte de la biblioteca estándar en asm.js?
Solución
Esta propiedad de NAN se usa comúnmente para identificarla:
var isNaN = a!=a;
de wikipedia :
Las predicadas de igualdad y desigualdad no son señalización, así que x= x La devolución de FALSO se puede usar para probar si X es una NAN tranquila
Otros consejos
if (value !== value) {
// Definitely NaN
}
Puede hacerlo como una función como esta
function isNaN(inputValue) {
return inputValue !== inputValue;
}