var y let permiten definir variables mutables. const permite definir variables inmutables. var permite crear variables con alcance a su función más cercana. let permite definir variables con un alcance a su bloque más cercano.
Const no son variables inmutables. Y lo puedes comprobar con un for, asignandole a una variable const el valor del iterador, vas a ver como va cambiando de valor en cada iteración. Es una característica que tiene, ya que si le asignamos como valor una variable, y esa variable cambia de valor, la constante también lo hace, es decir, lo que es inmutable es su referencia, no su valor
Otra diferencia es que let no te deja usar el mismo nombre para declarar otra variable en ninguna otra parte del código, lo que puede evitar errores involuntarios.
Si tenes: function doSomething () { console.log(a); var a = 5; } El hecho de que esto te muestre undefined, es porque la declaracion de la variable sube arriba de todo del scope de la function, pero no la inicializacion. Por ende, eso de arriba es equivalente para el lenguaje a hacer: function doSomething () { var a; console.log(a); a = 5; } Ahora, la principal diferencia con "let" o "const" es que no se inicializan a undefined, asi que te tira ese error de "not defined". Y algo para agregar, ojo con lo del scope de "var", es solo de bloques pero por ejemplo no funciona en closures. (funcion dentro de otra funcion) Por ultimo, no mucha gente agrega este detalle pero deberia ser un "must" para mi y tambien es preguntado en entrevistas, es una pregunta muy tricky que hacen, y es: Que pasa si defino una variable sin agregar el keyword "var, let o const" ? Es decir asi: `someVar = 5` Sin especificar nada mas? Bueno la respuesta es que ahi estas creando una variable global, no importa donde lo hagas; en una funcion, en cualquier tipo de bloque, en un closure, no importa... es basicamente lo mismo que hacer: window.someVar = 5; Por ende, `someVar` va a estar disponible en cualquier parte del script. Y mucho cuidado con esto, es peligroso, ya que al ser global, JAMAS va a ser limpiado por el garbage collector y va a ocupar memoria para siempre. Asi que por favor nunca lo hagan :D (Imaginen que meten largas estructuras de data de manera global)
los datos dentro de una const si pueden ser mutados pero no reemplazados, ejemplo: si tienes un array declarado con const, a este le puedes aplicar metedos como push, concat, filter, join, split, etc. Lo que no puedes es cambiar su valor, de string a number o un objeto. Tampoco declarar una const sin asignarle valor para luego hacerlo, ya que esta sera undefined y eso no se podra mutar. Espero se entienda.
¿Es mejor definir un let o un const cuando uno no se esta seguro de que va a cambiar? me explico, con la practica me he dado cuenta que el 90% de las veces no necesito una variable, si no que conque sea una constante me sirve y si algún día necesito que cambie la convierto en variable. ¿afecta en algo esto el rendimiento de la aplicación? ¿las constante ocupan mas o menos espacio de memoria o es lo mismo que una variable? ¿Es mejor usar una o la otra en cuanto rendimiento?
A nivel memoria usar let o const o var es lo mismo, pero entende que apenas se deja de usar esa variable, es limpiada por el garbage collector en tiempo de ejecucion. Dependiendo de donde la definas determina esto automaticamente. Pero ocupan lo mismo de memoria. Y con lo de la otra pregunta, no deberia pasar nada... si te parece que puede cambiar luego ponela como let... aunque si tenes un linter como eslint y bien configurado, te va a tirar un warning de que por favor cambies let por const si es que no va a cambiar en ningun momento... por temas de "Good Practices", es lo mas recomedable. Ya que para una persona que este leyendo tu codigo, apenas vea un "const" va a saber que eso se va a quedar fijo, ayuda a la lectura de codigo ajeno.
Las declaraciones let y var funcionan *exactamente* igual afuera de cualquier statement. Incluso si declaras una variable con var en un for loop, por ejemplo después del for no la vas a poder usar sin un error.
Yo tengo una pregunta, por que cuando escribo este ejercicio mi resultado es 3 veces 3 for (var i = 0; i < 3; i++) { setTimeout(() => console.log(i), 1); } pero cuando cambio la variable var i por let mi resultado es 0,1,2?
Porque setTimeout funciona en otro contexto. Cuando ejecutas ese for primero se ejecuta ese y luego la función. Para ese momento el for ya terminó por eso te manda tres veces 3. Cuando usas Let javascript engloba cada iteración en un contexto junto con el setTimeout porque el alcance es a nivel de bloque, por eso sale la iteración correctamente. Por es es preferible usar let sobre var
Si utilizas vscode te recomiendo la extension live server, solo necesitas darle click derecho al documento html una vez instalada la extension y le das donde dice Open with live server.
@@vidamrr supongo que me sorprenderé aun más, llevo poco tiempo estudiando html, ccs y javascript por mi cuenta , en este ultimo lenguaje encontré cosas extrañas como cuando haces operaciones matemáticas con string en algunas cosas hace una conversión implicita en otros te tira error, entre otras cosas que no recuerdo ahora mismo y me sorprenden por ser un lenguaje muy popular, supongo que esa es la particularidad de este lenguaje.
Los traspiladores como Babel transforman tu código moderno en uno más soportado por todos los navegadores, entonces aunque tú no uses var directamente en tu código probablemente tu código en producción si lo esté haciendo, y sino al menos te diría que las aplicaciones más grandes que usas en tu día a día lo hacen
@@vidamrr Hola capo!. SIempre te sigo. Pero me sale el profe que llevo siempre y de profesión. Hay videos que oscurecen. Padadogía es lo que te falta, preparar mejor lo que vas a decir y obviamente el cómo!. El riesgo que corren los que dicen entender es que lo hayan aprendido MAL!. ... o no!. De lo que no hay dudas es de tus conocimientos. Te fui frontal porque a veces ayuda a mejorar.
var y let permiten definir variables mutables.
const permite definir variables inmutables.
var permite crear variables con alcance a su función más cercana.
let permite definir variables con un alcance a su bloque más cercano.
Const no son variables inmutables. Y lo puedes comprobar con un for, asignandole a una variable const el valor del iterador, vas a ver como va cambiando de valor en cada iteración.
Es una característica que tiene, ya que si le asignamos como valor una variable, y esa variable cambia de valor, la constante también lo hace, es decir, lo que es inmutable es su referencia, no su valor
@@dontqsy5101 Interesante. No lo sabía. Gracias.
Otra diferencia es que let no te deja usar el mismo nombre para declarar otra variable en ninguna otra parte del código, lo que puede evitar errores involuntarios.
Gracias :)
Excelente explicación don Marcos. Gracias por el video. Pude entender la diferencia de las 3 variables.
Si tenes:
function doSomething () {
console.log(a);
var a = 5;
}
El hecho de que esto te muestre undefined, es porque la declaracion de la variable sube arriba de todo del scope de la function, pero no la inicializacion. Por ende, eso de arriba es equivalente para el lenguaje a hacer:
function doSomething () {
var a;
console.log(a);
a = 5;
}
Ahora, la principal diferencia con "let" o "const" es que no se inicializan a undefined, asi que te tira ese error de "not defined".
Y algo para agregar, ojo con lo del scope de "var", es solo de bloques pero por ejemplo no funciona en closures. (funcion dentro de otra funcion)
Por ultimo, no mucha gente agrega este detalle pero deberia ser un "must" para mi y tambien es preguntado en entrevistas, es una pregunta muy tricky que hacen, y es:
Que pasa si defino una variable sin agregar el keyword "var, let o const" ? Es decir asi:
`someVar = 5`
Sin especificar nada mas?
Bueno la respuesta es que ahi estas creando una variable global, no importa donde lo hagas; en una funcion, en cualquier tipo de bloque, en un closure, no importa... es basicamente lo mismo que hacer:
window.someVar = 5;
Por ende, `someVar` va a estar disponible en cualquier parte del script. Y mucho cuidado con esto, es peligroso, ya que al ser global, JAMAS va a ser limpiado por el garbage collector y va a ocupar memoria para siempre. Asi que por favor nunca lo hagan :D (Imaginen que meten largas estructuras de data de manera global)
Gracias por compartir! Saludos desde Nicaragua!!
Gracias Luis! saludos desde México
los datos dentro de una const si pueden ser mutados pero no reemplazados, ejemplo: si tienes un array declarado con const, a este le puedes aplicar metedos como push, concat, filter, join, split, etc. Lo que no puedes es cambiar su valor, de string a number o un objeto. Tampoco declarar una const sin asignarle valor para luego hacerlo, ya que esta sera undefined y eso no se podra mutar. Espero se entienda.
Gracias, me lo habian dicho en una entrevista y no me acordaba de como era la definición exacta
Exactamente. Yo de hecho todos mis objetos los declaro como "const" :D
excelente tutorial, muy explicativo y al fin pude sacarme la duda de esas 3.
Exelente me quedo bién claro.Yo estaba con una duda bién grande con const, let y var.
Muy buena explicación, te entendí clarísimo, gracias.
Muchas gracias Dios te bendiga.
Buen video bro gracias, me demore entendiendo en otros lados y eso que yo se programar, pero alfin entendi.
Excelente explicación
¿Es mejor definir un let o un const cuando uno no se esta seguro de que va a cambiar?
me explico, con la practica me he dado cuenta que el 90% de las veces no necesito una variable, si no que conque sea una constante me sirve y si algún día necesito que cambie la convierto en variable.
¿afecta en algo esto el rendimiento de la aplicación?
¿las constante ocupan mas o menos espacio de memoria o es lo mismo que una variable?
¿Es mejor usar una o la otra en cuanto rendimiento?
A nivel memoria usar let o const o var es lo mismo, pero entende que apenas se deja de usar esa variable, es limpiada por el garbage collector en tiempo de ejecucion. Dependiendo de donde la definas determina esto automaticamente. Pero ocupan lo mismo de memoria.
Y con lo de la otra pregunta, no deberia pasar nada... si te parece que puede cambiar luego ponela como let... aunque si tenes un linter como eslint y bien configurado, te va a tirar un warning de que por favor cambies let por const si es que no va a cambiar en ningun momento... por temas de "Good Practices", es lo mas recomedable. Ya que para una persona que este leyendo tu codigo, apenas vea un "const" va a saber que eso se va a quedar fijo, ayuda a la lectura de codigo ajeno.
Las declaraciones let y var funcionan *exactamente* igual afuera de cualquier statement. Incluso si declaras una variable con var en un for loop, por ejemplo después del for no la vas a poder usar sin un error.
Gracias por el video , muy buena explicacion.
Muchas gracias, muy claro todo ✌🏽
Buenas podríais decirme que la fuente de texto que esta usando en el video en visual studio code? Muchas gracias.
Super la explicación felicidades!!!!!
Gracias. Me ayudó mucho
Yo tengo una pregunta, por que cuando escribo este ejercicio mi resultado es 3 veces 3
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1);
}
pero cuando cambio la variable var i por let mi resultado es 0,1,2?
Porque setTimeout funciona en otro contexto. Cuando ejecutas ese for primero se ejecuta ese y luego la función. Para ese momento el for ya terminó por eso te manda tres veces 3. Cuando usas Let javascript engloba cada iteración en un contexto junto con el setTimeout porque el alcance es a nivel de bloque, por eso sale la iteración correctamente. Por es es preferible usar let sobre var
Como se hace para sincronizar el visual studio code con la consola del navegador?
Amigo excelente info.
Me podrías decir que tema usas en VSCode
ruclips.net/video/3gphzKzonRE/видео.html
muy buen video gracias
Excelente muy bueno gracias
Muy bien explicado
cual es ese tema de vscode
bello hermano entendi un 100% gracias
Qué bueno!! gracias por ver el video amigo
¿como haces para que tu entorno de desarrollo y tu navegador se sincronicen??
Si utilizas vscode te recomiendo la extension live server, solo necesitas darle click derecho al documento html una vez instalada la extension y le das donde dice Open with live server.
No sé si entendí pero ¿var, let y const es como algún tipo de encapsulamiento?
What? No... es para definir una variable.
hola, me puedes decir los pasos de como probar mi código con go life de vs, asi en tiempo real como tu lo haces. gracias
Hola, como haces para que lo que escribes em vscode se refleje en la consola de google?
Tiene un archivo HTML abierto.
gracias me sacaste de una duda
alguna pagina que dicte curso gratuito y den certificado?
udemy
Se agradece.
Hola amigo tengo dos ejercicios que para ti seguro es un pasaje y quisiera saber si me puedes ayudar!!!
Ya los resolví amigo
Mi impresión es que se explica todo
sin orden y confuso.
Excelente
Gracias!
Gracias
Es la tercera vez que escucho que usan el término variable para referirse a una constante.
Vas a explotar cuando sepas que hasta la TC39 le dice así 😂😂😂
@@vidamrr supongo que me sorprenderé aun más, llevo poco tiempo estudiando html, ccs y javascript por mi cuenta , en este ultimo lenguaje encontré cosas extrañas como cuando haces operaciones matemáticas con string en algunas cosas hace una conversión implicita en otros te tira error, entre otras cosas que no recuerdo ahora mismo y me sorprenden por ser un lenguaje muy popular, supongo que esa es la particularidad de este lenguaje.
god
var ya no se usa ajajaja
Los traspiladores como Babel transforman tu código moderno en uno más soportado por todos los navegadores, entonces aunque tú no uses var directamente en tu código probablemente tu código en producción si lo esté haciendo, y sino al menos te diría que las aplicaciones más grandes que usas en tu día a día lo hacen
Pésima explicación
Gracias por tu comentario, qué fue lo que consideras que debería mejorar del video? Esto para que la próxima vez sea más entendible para ti
@@vidamrr Hola capo!. SIempre te sigo. Pero me sale el profe que llevo siempre y de profesión. Hay videos que oscurecen. Padadogía es lo que te falta, preparar mejor lo que vas a decir y obviamente el cómo!. El riesgo que corren los que dicen entender es que lo hayan aprendido MAL!. ... o no!. De lo que no hay dudas es de tus conocimientos. Te fui frontal porque a veces ayuda a mejorar.
gracias
Gracias!