Hoisting y coerción
Clase 7 de 99 • 30 días de JavaScript
Contenido del curso
Clase 7 de 99 • 30 días de JavaScript
Contenido del curso
El hoisting es un comportamiento de JavaScript en el que las declaraciones de variables y funciones son movidas al comienzo del ámbito actual antes de que cualquier otro código sea ejecutado. Esto significa que las declaraciones de variables y funciones pueden ser utilizadas antes de haber sido declaradas en el código.
Por ejemplo, si tenemos el siguiente código:
console.log(x); var x = 5;
JavaScript interpreta este código como si estuviera escrito de la siguiente manera:
var x; console.log(x); x = 5;
Esto significa que cuando se ejecuta el código, el valor de x será undefined en la primera línea, ya que la declaración de x ha sido movida al comienzo del ámbito.
Sin embargo, es importante tener en cuenta que las asignaciones no son movidas al comienzo del ámbito, sólo las declaraciones. Esto significa que el siguiente código dará un error:
console.log(x); x = 5;
Por otro lado, coercion es el proceso en el cual JavaScript intenta convertir automáticamente un valor de un tipo a otro, para que puedan ser comparados o operados. Esto puede dar lugar a algunos resultados inesperados si no se tiene en cuenta.
Por ejemplo, si comparamos un número con un string:
console.log(1 == "1")
El resultado sería verdadero, ya que JavaScript intenta convertir el string "1" en el número 1 antes de compararlos.
Otro ejemplo es el siguiente:
console.log(true == 1)
Aquí, el valor booleano true es convertido en el número 1 antes de compararlos, dando como resultado verdadero.
Es importante tener en cuenta estos comportamientos de JavaScript y asegurarse de que los valores estén en el tipo correcto antes de realizar comparaciones u operaciones. Esto puede ser logrado mediante funciones específicas de tipo o usando el operador estricto === en lugar del operador de igualdad ==.
Todo esto y más lo puedes aprender en el Curso Básico de JavaScript
Luis Castro
Federico Guillermo Moreira Tejera
Luis Castro
Alvaro Eduardo Garzón Pira
Diego Toro Cárdenas
Fernando Gill
Diego Toro Cárdenas
Brandoly Jack
Federico Guillermo Moreira Tejera
Luis Enrique Andrino Duque
Carlos Andrade
Ricardo Alfonso Chavez Vilcapoma
Ricardo Samael Guzman Alejandro
Aquí tienes algunos datos curiosos sobre hoisting y coerción en JavaScript:
.
string y un number en JavaScript, el number se convierte automáticamente en string. Esto se conoce como coerción implícita.
.parseInt() o toString().
.== en lugar del operador de igualdad estricta ===, JavaScript puede realizar una coerción implícita de los valores antes de compararlos, lo que puede dar lugar a resultados inesperados.
.string y un number en JavaScript, el number se convierte en string y la operación se convierte en una concatenación de cadenas.ledytro muy clara la explicación de coerción. Me surgió una duda, con cualquier tipo de dato se puede hacer una coerción implícita (tú das el ejemplo de number y string), o hay sierta limitación para ciertos tipos de datos?. Muchas Gracias
JavaScript lo hace sobre todo cuando se opera un tipo de dato number y boolean con un string, ya que hace algunas interpretaciones o suposiciones acerca de ese dato, convirtiendo la operación en una concatenación o una operación matemática. Por eso se señala que JavaScript es un lenguaje débilmente tipado y dinámico
¡Hola tú!
Quizás el Hoisting pueda sonar algo raro al principio, pero te dejo un vídeo que me ayudó por completo con bonitas animaciones :3 para aprender el concepto de hoisting en caso que hayas finalizado con dudas.
= // asigna == // compara === // equivale
Buen aporte!
Mejor así:
= // asigna valores; == // compara valores por su tipo de datos; === // equivale valores porque le es irrelevante el tipo de datos;
lo que pasa es lo siguiente
console.log(miNombre); let miNombre = "jose"
cuando se empieza a leer el código encuentra una variable que es miNombre que esta dentro del console.log lo que hace es declárala al principio antes del console.log y como no esta inicializada es decir no tiene valor se pone como undefined después encuentra el console.log esto hace que se muestre el valor de la variable y como no estaba inicializada hasta ese momento el valor es undefined pero diferente seria si console.log estuviera después de ser inicializada la variable es decir de tener el valor "jose"
Excelente clase. Muy claro como se explico hoisting para una variable.
Esto lo vi en el curso básico de JavaScript de Diego, pero nunca está de más repasar los conceptos otra vez. 💚
7/80 Hoisting y coerción El hoisting es un comportamiento de JavaScript que mueve las declaraciones de variables y funciones al comienzo del ámbito antes de que cualquier otro código sea ejecutado. Esto significa que las variables y funciones pueden ser utilizadas antes de su declaración en el código.
console.log(x); var x = 5; //JavaScript interpreta este código como: var x; console.log(x); x = 5;
Coerción es el proceso en el que JavaScript intenta convertir automáticamente un valor de un tipo a otro para que puedan ser comparados o operados. Esto puede dar lugar a algunos resultados inesperados si no se tiene en cuenta.
console.log(1 == "1"); // true console.log(true == 1); // true
Existen dos tipos de coerción:
El lenguaje JS lo hace:
console.log(4 + "7"); //47 //JavaScript interpreta a 7 como un string y lo que hace es concatenar el 4 al inicio.
El desarrollador lo hace
let a = 4; let c = String(a); console.log(typeof c); //"string"
andaba re perdido con esto JAJAJAJ gracias!!!!, un compañero compartio un link de un video de yt acerca de que es el Hoisting y me quedo mas claro