¿bol === !0 es exactamente lo mismo que bol == true?

Ejemplo:

function myFunction(bol){
    if(bol===!0){
        return 1;
    }else{
        return -1;
    }
}

alert(myFunction(true));//1

¿Tendré problemas alguna vez si decido usarlo? (diferente a la legibilidad del código)

0
mithril333221 14 ene. 2012 a las 05:33
2
 – 
Matt Ball
14 ene. 2012 a las 05:37
Tengo curiosidad por saber para qué se está utilizando este código.
 – 
LoveAndCoding
14 ene. 2012 a las 05:37
1
Mi pregunta no está cerca de esa
 – 
mithril333221
14 ene. 2012 a las 05:49
No use !0 para true; un guardado de dos caracteres no vale la pena perder en legibilidad. Si quieres true solo di true.
 – 
nnnnnn
14 ene. 2012 a las 06:54
Algunos compresores JS usan !0 y !1 para ahorrar un par de bytes.
 – 
user123444555621
14 ene. 2012 a las 07:19

1 respuesta

La mejor respuesta

No. 1 == true es true pero 1 === !0 es falso.

Dado que !0 es true, esto es equivalente a bol === true. Tenga en cuenta cómo debe seguir utilizando los tres signos iguales para obtener exactamente el mismo comportamiento.

El === significa que JavaScript no intentará forzar los valores al comparar. Si realmente quiere coaccionar, usaría ==. Sin embargo, en este caso, el if simplemente te coaccionará:

if (bol) { ... }

Es básicamente la misma que

if (bol == true) { ... }
3
Tikhon Jelvis 14 ene. 2012 a las 05:44
Entonces bol === !0 === bol === true?
 – 
mithril333221
14 ene. 2012 a las 05:44
Sí, porque evalúa !0 primero, que es igual a true.
 – 
Tikhon Jelvis
14 ene. 2012 a las 05:47