He visto esto en las fuentes de una lib, y confundido. Creo que siempre se evalúa como 'false
'. ¿Cuál es el significado de usar eso?¿Qué verifica la expresión 'v! == v'?
Respuesta
Comprueba si v
es NaN
:
if(v !== v){
//'v' is NaN here
}
De standard:
Una manera fiable para el código de ECMAScript para probar si un valor de X es un NaN es una expresión de la forma X! == X. El resultado será verdadero si y solo si X es un NaN.
¿Por qué no usar el built-in isNaN()
?
La respuesta es simple: "isNaN()
no es lo suficientemente confiable.". Éstos son los casos, cuando se isNaN()
fallidos:
isNaN("NaN") //true
isNaN(undefined) //true
Pone a prueba de "no es un número": NaN !== NaN
es igual a true
De MDN:
El valor inicial de NaN es No-A-Number - el mismo que el valor de Número. Yaya. En los navegadores modernos, NaN es una propiedad no configurable de no modificable. Incluso cuando este no es el caso, evite anulándolo.
Es bastante raro utilizar NaN en un programa. Es el valor devuelto cuando las funciones matemáticas fallan
(Math.sqrt(-1))
o cuando una función que intenta analiza un número que falla(parseInt("blabla"))
.
- 1. Hoptoad v. Excepcional v. Excepción_notificación v. Exception_logger
- 2. varchar (255) v tinyblob v tinytext
- 3. scalac v javac y scala v java
- 4. Mejores prácticas orientadas a objetos - Herencia v Composición v Interfaces
- 5. Python:. V matriz Lista
- 6. atol() v/s. strtol()
- 7. Phusion Passenger v. WEBrick
- 8. ¿Qué significa? V = 2 en css?
- 9. MongoDB v/s Redis
- 10. Applet v/s Servlet
- 11. Mealy v/s. Moore
- 12. foreach: "in" v. "As"
- 13. Parse v. TryParse
- 14. AuthorizeAttribute v Application_AuthenticateRequest
- 15. ¿Qué es LinkedHashMap <k, v>?
- 16. jquery v javascript
- 17. RestSharp v. WebClient?
- 18. Tema tarea v/s asíncrono
- 19. ¿Por qué python -V escribe en la secuencia de error?
- 20. ¿Qué significa V en la extensión de archivo Coq?
- 21. Javascript Speed - Chrome v Firefox
- 22. Diferencia entre NSWindowController V NSViewController
- 23. Hash Table v/s Trees
- 24. La comprensión HashMap <K,V>
- 25. ¿Se puede redireccionar la salida bash -v?
- 26. equivalente a grep -v Rubí
- 27. window.open target _self v window.location.href?
- 28. Manipular Hyper-V de .NET
- 29. Evento transcurrido v Marque evento?
- 30. struct sockaddr_un v/s sockaddr - C (Linux)
Evidentemente, la forma de hacerlo en la ES6 es 'Object.is (obj, NaN)': http://wiki.ecmascript.org/doku.php ? id = harmony: egal –
@OttoAllmendinger Muy interesante. Gracias por la información. – Engineer