¿Las 3 formas usan la misma conversión a bool?
function check(variable){ let b1 = Boolean(variable); let b2 = !!variable; let b3 = variable ? true : false; return b1 === b2 && b2 === b3; }¿Las 3 formas usan la misma conversión a bool?
Sí. La función Boolean , el operador lógico NOT y el operador condicional convierten el valor en un valor booleano a través del algoritmo ToBoolean interno:
(por supuesto, los motores son libres de implementarlo como quieran, pero tiene que comportarse como dictan las especificaciones)
MDN Web Docs nos dice lo siguiente:
No utilice un objeto booleano para convertir un valor no booleano en un valor booleano. Para realizar esta tarea, en su lugar, use Boolean como una función, o un operador NOT doble:
const x = Boolean(expression); // use this... const x = !!(expression); // ...or this const x = new Boolean(expression); // don't use this!De acuerdo con los documentos, la primera forma es equivalente a la segunda forma y mirando la segunda forma, podría deducir que es equivalente a la tercera forma que sugirió.
Entonces, las tres formas deberían ser equivalentes y dependen de lo que JavaScript considere como un valor truthy
En cuanto a por qué no debería usar new Boolean() para convertir algo a booleano, esta sección ofrece una pequeña explicación. TL; DR Puede inicializar accidentalmente los valores que no son verdaderos como verdaderos.