Sé que JavaScript admite Autoboxing (la conversión automática de un tipo de datos primitivo a su contraparte de objeto), pero ¿JavaScript también admite Unboxing (la conversión automática de un objeto a su contraparte de tipo de datos primitivo)?
pero JavaScript también es compatible con Unboxing (la conversión automática de un objeto a su contraparte de tipo de datos primitivo)
Sí lo hace. Esto es bastante lo que sucede, por ejemplo, cuando lo haces:
'' + { };Que te consigue:
'[object Object]'Aunque esto no encaja exactamente con "Unboxing".
Creo que un mejor ejemplo sería usar una String o un Number . Dado que esos son los valores que realmente se encuadran.
new String('test') + '!!!' // "test!!!" 2 ** (new Number(2)) // 4 2 + (new Number(2)) //4 2 / (new Number(2)) //1La forma más fácil de obtener el valor primitivo subyacente de un envoltorio de objeto es usar el método valueOf():
const a = Object(false); a == false; //true a === false //false a.valueOf() == false //true a.valueOf() === false //true