2012-01-05 10 views
37

Si vas a una página de resultados de Google, y ejecutar rwt.toString(), verá que la llamada de retorno de esta función es:¿Hay algún punto de usar "return! 0" en javascript?

return !0; 

no se me ocurre ninguna razón por la que esto no sería siempre true. ¿Es esto solo una abreviatura de true, o hay más cosas aquí?

Respuesta

44

Siempre es cierto, pero se necesitan 2 bytes para descargar (!0 son 2 caracteres) en lugar de 4 bytes para descargar el valor booleano true.

La mayoría de los miniaturizados de Javascript convertirán true en !0 y false en !1. Puede ver un ejemplo de esto escribiendo var y = true; con optimizaciones simples en el compilador de cierre de Google: http://closure-compiler.appspot.com/home

+1

, sin embargo, solo se necesita 1 byte para descargar 1. return 1; habría funcionado igual de bien, ¿no? Al ser distinto de cero, y todos sabemos que no prueba la verdad, prueba no falso. – stu

+0

Esto es interesante. ¿La mayoría de las implementaciones de javascript optimizan! 0 y! 1 en verdadero y falso sin calcular? – Kekoa

+5

@stu 'return 1;' devuelve un tipo 'number'. Si alguien fuera a usar el valor de retorno con los operadores '===' o '! ==', obtendrán los resultados esperados de '! 0', pero no de' 1'. – Paulpro

Cuestiones relacionadas