Curso Javascript - #03 const vs let vs var

Bluuweb
15 Mar 202308:56

Summary

TLDREste video tutorial aborda las diferencias fundamentales entre 'let', 'const' y 'var' en JavaScript. Se explica cómo 'let' permite la reasignación de valores, ideal para variables cuyo valor cambia, como contadores. En contraste, 'const' restringe la reasignación, manteniendo el valor inicial asignado. Se destacan las reglas de alcance o 'scope', mostrando cómo variables declaradas con 'let' y 'const' pueden redeclararse dentro de diferentes ámbitos. Además, se toca brevemente cómo 'var' se comporta de manera global, independientemente de los bloques de código. El video concluye con ejemplos prácticos, incluyendo mutación de objetos y arrays, para ilustrar cómo 'const' puede usarse para mutar propiedades de objetos o contenidos de arrays sin reasignar la variable misma.

Takeaways

  • 🔹 **let** permite inicializar variables que pueden cambiar de valor o tipo a lo largo del tiempo.
  • 🔹 **const** requiere que las variables se inicialicen al momento de declararse y no permite cambiar su valor ni tipo posteriormente.
  • 🔹 Utilizar **let** cuando se prevea la necesidad de reasignar valores a una variable.
  • 🔹 Optar por **const** para declarar variables cuyo valor no se pretende cambiar, aumentando así la previsibilidad del código.
  • 🔹 **let** y **const** tienen un alcance de bloque, lo que significa que respetan los límites de los bloques en los que se declaran.
  • 🔹 Se puede redeclarar variables con **let** o **const** dentro de un bloque diferente al de su declaración original.
  • 🔹 **var** declara variables con un alcance global o de función, sin respetar los bloques.
  • 🔹 Acceder a una variable **var** antes de su declaración resulta en `undefined` en vez de un error de referencia, debido al hoisting.
  • 🔹 Mutar objetos o arrays declarados con **const** es posible, ya que lo que permanece inmutable es la referencia, no el contenido.
  • 🔹 Es recomendable evitar **var** en favor de **let** y **const** para mejorar la claridad y manejo de alcance en el código.

Q & A

  • ¿Cuál es la principal diferencia entre 'let' y 'const' en JavaScript?

    -La principal diferencia es que 'let' permite reasignar valores a una variable, mientras que 'const' no lo permite, es decir, una vez que se asigna un valor a una variable declarada con 'const', este no puede cambiar.

  • ¿Qué sucede si intentas cambiar el valor de una variable declarada con 'const'?

    -El intento de cambiar el valor de una variable declarada con 'const' resultará en un error, ya que 'const' no permite la reasignación de valores.

  • ¿Es posible declarar una variable con 'let' sin asignarle un valor inicial?

    -Sí, es posible declarar una variable con 'let' sin asignarle un valor inicial, lo que resulta en una variable con un valor 'undefined'.

  • ¿Qué sucede si declaras una variable con 'let' o 'const' dos veces en el mismo ámbito?

    -Declarar una variable con 'let' o 'const' dos veces en el mismo ámbito generará un error, ya que no se permite la redeclaración de variables en el mismo ámbito.

  • ¿Puedes redeclarar una variable en diferentes ámbitos con 'let' o 'const'?

    -Sí, puedes redeclarar una variable en diferentes ámbitos (o scopes) con 'let' o 'const'. El ámbito más cercano tendrá prioridad en el acceso a la variable.

  • ¿Qué demuestra el ejemplo con la variable 'contador' en diferentes ámbitos?

    -El ejemplo muestra que, aunque no se puede redeclarar una variable en el mismo ámbito, es posible declarar la misma variable en diferentes ámbitos, y JavaScript accederá a la variable del ámbito más cercano.

  • ¿Qué diferencia hay entre 'var' y 'let'/'const' en términos de ámbito?

    -La principal diferencia es que 'var' tiene un ámbito de función o global sin importar el bloque de código, mientras que 'let' y 'const' tienen un ámbito de bloque, lo que limita su acceso solo dentro del bloque donde se declaran.

  • ¿Qué es el 'hoisting' y cómo se relaciona con 'var'?

    -'Hoisting' es un comportamiento de JavaScript donde las declaraciones de variables y funciones son movidas al inicio de su ámbito antes de la ejecución del código. 'var' se ve afectado por el 'hoisting', permitiendo que las variables sean accesadas antes de su declaración explícita.

  • ¿Es posible mutar el contenido de un objeto declarado con 'const'?

    -Sí, es posible mutar el contenido de un objeto declarado con 'const', como cambiar las propiedades del objeto o agregar nuevas. Lo que no permite 'const' es reasignar el objeto a otro valor.

  • ¿Qué sucede si intentas acceder a una variable 'let' o 'const' fuera de su ámbito?

    -Si intentas acceder a una variable 'let' o 'const' fuera de su ámbito, obtendrás un error, ya que estas variables no son accesibles fuera del bloque en el que fueron declaradas.

Outlines

00:00

🔍 Diferencias entre let y const en JavaScript

Este segmento introduce las diferencias fundamentales entre 'let' y 'const' en JavaScript, utilizando Visual Studio Code para demostrar cómo 'let' permite la reasignación de valores a una variable, mientras que 'const' prohíbe esta acción, manteniendo el valor inicial asignado. Se destaca que 'let' puede iniciar una variable sin definir, permitiendo su posterior asignación, a diferencia de 'const', que requiere una asignación inicial. Además, se explora el concepto de ámbito ('scope'), mostrando cómo variables declaradas con 'let' o 'const' dentro de un ámbito específico pueden ser redeclaradas en ámbitos distintos sin causar errores, mientras que redeclararlas en el mismo ámbito resulta en un error. Este principio subraya la importancia de entender cómo funcionan los ámbitos para evitar conflictos y errores en el código.

05:01

📘 Conclusión y aplicación de conocimientos en JavaScript

El segundo párrafo enfatiza la importancia de comprender las diferencias entre 'let', 'const' y 'var', ofreciendo una perspectiva sobre cómo 'var' se comporta diferentemente al tener un ámbito global que permite su acceso incluso antes de su declaración explícita. Este concepto, conocido como 'hoisting', se presenta como una característica menos deseable debido a potenciales problemas de legibilidad y mantenimiento del código. El narrador anima a los espectadores a profundizar en el estudio de JavaScript a través de un curso recomendado, preparándolos para aplicar estos conocimientos en frameworks populares como React, Vue, o Angular. Finalmente, se introduce brevemente cómo los objetos y arrays en JavaScript pueden mutar incluso cuando son declarados con 'const', preparando el terreno para futuras lecciones que explorarán la manipulación de estructuras de datos complejas en JavaScript.

Mindmap

Keywords

💡let

En el contexto de JavaScript, 'let' es una palabra reservada utilizada para declarar variables cuyo valor puede cambiar durante la ejecución del código. En el vídeo, 'let' se contrasta con 'const' para destacar su capacidad de permitir la reasignación de valores. Por ejemplo, se utiliza 'let' para inicializar un contador a cero y luego incrementarlo, mostrando cómo se puede modificar el valor de la variable.

💡const

La palabra reservada 'const' en JavaScript se usa para declarar variables cuyo valor no se pretende cambiar una vez asignado. El vídeo enfatiza que 'const' requiere que la variable sea inicializada en el momento de su declaración y no permite su reasignación, a diferencia de 'let'. Se menciona cómo intentar reasignar o cambiar el tipo de valor de una variable 'const' generaría errores.

💡reasignar

Reasignar se refiere al acto de cambiar el valor de una variable después de su inicialización. El vídeo utiliza este concepto para explicar la diferencia principal entre 'let' y 'const', donde 'let' permite la reasignación de valores, mientras que 'const' no lo permite, mostrando ejemplos prácticos de cómo esto afecta el flujo del código.

💡undefined

'undefined' es un valor que se asigna a variables que han sido declaradas pero aún no les ha sido asignado ningún valor. El vídeo ilustra cómo una variable declarada con 'let' puede inicialmente no tener asignado ningún valor, es decir, ser 'undefined', y cómo esto difiere de 'const', que requiere una asignación de valor en la declaración.

💡scope

El 'scope' o ámbito se refiere al contexto en el que las variables son accesibles dentro de un código. El vídeo explica cómo 'let' y 'const' tienen un alcance de bloque, lo que significa que las variables declaradas con estas palabras reservadas son accesibles solo dentro del bloque en que se declaran. Se proporciona un ejemplo con 'scope' local y global para ilustrar cómo funciona la visibilidad de las variables.

💡bloque

Un 'bloque' en JavaScript se refiere a un conjunto de instrucciones encerradas entre llaves '{}'. El vídeo destaca cómo las variables declaradas con 'let' o 'const' dentro de un bloque tienen un 'scope' o alcance limitado a ese bloque, permitiendo la redeclaración en bloques diferentes sin conflictos, mostrando la importancia del 'scope' en la estructura del código.

💡var

'var' es otra palabra reservada en JavaScript para declarar variables, pero a diferencia de 'let' y 'const', su 'scope' es funcional o global y no de bloque. El vídeo critica a 'var' por su comportamiento menos predecible y su hoisting, que permite que las variables sean accesibles antes de su declaración, mostrando ejemplos de cómo esto puede llevar a errores sutiles en el código.

💡hoisting

El 'hoisting' es un comportamiento de JavaScript por el cual las declaraciones de variables (y funciones) se mueven al inicio de su 'scope' antes de que el código se ejecute. En el vídeo, se menciona el 'hoisting' al hablar de 'var', indicando cómo este comportamiento puede llevar a confusión, ya que permite el acceso a las variables antes de su declaración explícita.

💡mutar

Mutación se refiere al cambio del estado o contenido de un objeto o array sin cambiar su referencia en memoria. El vídeo utiliza este concepto al final para diferenciar entre la reasignación de la variable y la mutación de su contenido, usando ejemplos con objetos y arrays para mostrar cómo 'const' permite la mutación de sus propiedades aunque no la reasignación del objeto en sí.

💡objeto

Un 'objeto' en JavaScript es una colección de propiedades, donde una propiedad es una asociación entre un nombre (o clave) y un valor. El vídeo introduce brevemente cómo trabajar con objetos, mostrando que, aunque una variable objeto declarada con 'const' no puede ser reasignada a otro valor o tipo, las propiedades del objeto pueden ser mutadas.

Highlights

Inicio de la batalla de 'let' versus 'const', excluyendo 'var' pero con notas al final.

'let' permite inicializar variables y reasignarles valores, ideal para contadores.

La principal regla de 'const' es que no permite la reasignación de valores.

Diferencia entre 'let' y 'const': 'let' acepta reasignaciones y 'const' exige inicialización inmediata.

'let' puede iniciar como undefined, mostrando flexibilidad en la inicialización.

Tanto 'let' como 'const' no permiten declarar dos veces la misma variable en el mismo ámbito.

En un nuevo ámbito ('scope'), es posible declarar nuevamente una variable con el mismo nombre.

La visibilidad de las variables 'let' y 'const' se limita a su ámbito, no siendo accesibles de un ámbito externo.

'var' tiene un alcance global, lo que permite su acceso incluso antes de ser declarada.

El 'hoisting' permite el acceso a variables 'var' declaradas posteriormente, aunque su valor inicial sea 'undefined'.

Mutación de objetos y arrays es posible con 'const', distinguiendo entre reasignación y mutación.

La práctica de mutar objetos y arrays muestra la flexibilidad de 'const' para estructuras de datos complejas.

Análisis de la utilidad de 'var' en aplicaciones modernas y su posible reemplazo por 'let' y 'const'.

Invitación a reflexionar sobre el uso de 'var' en contextos específicos y su relevancia actual.

Conclusión con la recomendación de preferir 'let' y 'const' sobre 'var' para un manejo de variables más predecible y seguro.

Transcripts

play00:00

vamos a comenzar con la batalla de coms

play00:02

versus led por si acaso al bar lo vamos

play00:06

a dejar aparte pero de todas formas les

play00:08

voy a dar unas notas al final de este

play00:09

vídeo tutorial si nos vamos a nuestro

play00:11

querido visual Studio code si abrimos la

play00:13

terminal pump vamos a notar que esta

play00:16

palabra reservada led no sirve para

play00:18

inicializar una variable Como por

play00:20

ejemplo contador Mira qué bonito lo voy

play00:22

a inicializar en cero si aparece el cero

play00:24

por favor ahora sí y le ponemos un

play00:26

consola de contador si guardo miren que

play00:30

ahí está el cero maravilloso Cuál es la

play00:32

diferencia entonces entre led y con

play00:34

esquelets no permite poder

play00:37

reasignarle un valor por ejemplo si este

play00:40

contador fuera aumentando no va a haber

play00:42

ningún problema yo lo voy a hacer muchas

play00:44

veces y ese contador aumenta Este es un

play00:47

ejemplo de uso muy común de leds pero si

play00:51

esto mismo lo Tratamos de hacer con con

play00:53

miren que nuestro sitio web va a

play00:55

reventar por qué porque la primera regla

play00:58

de cons es que no puede ser reasignado o

play01:02

sea si ya le pusimos 0 te quedaste

play01:04

tranquilito con ese cero y no le puedo

play01:05

ir aumentando o incluso cambiar el tipo

play01:08

de valor si acá yo le pusiera un String

play01:10

tampoco lo va a aceptar en cambio led le

play01:16

da lo mismo puede aceptar cualquier cosa

play01:17

le estamos reasignando un valor sin

play01:20

ningún problema se va entendiendo más o

play01:22

menos cada vez que queramos entonces

play01:23

cambiar el valor o reasignar un valor de

play01:27

una variable vamos a utilizar led y en

play01:29

todos los otros casos vamos a utilizar

play01:31

hay otra diferencia Y antes que se me

play01:33

olvide es que led también podemos

play01:35

iniciar la variable no sé qué dije ahí

play01:38

que dije ahí la podemos inicializar como

play01:41

On The Final por lo tanto si yo lo pinto

play01:43

en consola este contador voy a guardar

play01:46

miren que no tiene nada pero con la

play01:49

palabra reservada con Esto va a explotar

play01:52

entonces también tenemos otra diferencia

play01:54

con Sí o sí tenemos que pasarle un valor

play01:57

de inmediato Como por ejemplo

play01:59

este cero pero con leds resumiendo si

play02:04

podría ser un valor un defined y ahora

play02:06

sin problema podemos asignarle un nuevo

play02:09

valor que en este caso Recuerden que

play02:10

estaban de final y ahora debería

play02:12

aparecer ese número uno resumiendo todo

play02:16

lo que hemos llevado hasta acá let's se

play02:18

le puede reasignar un valor puede

play02:19

comenzar como and The Final y con no

play02:22

puede comenzar and thefiner y no le

play02:24

podemos reasignar su valor más adelante

play02:27

en este mini curso vamos a seguir

play02:28

practicando con con porque vamos a hacer

play02:31

que objetos y array muten que no es lo

play02:33

mismo que resignar su valor dejando las

play02:36

diferencias y esa batalla vamos a ver

play02:38

qué cosas comparten Como por ejemplo Si

play02:41

volvemos a declarar contador como un led

play02:44

miren que tampoco puedo volver a

play02:47

inicializar esa variable con la palabra

play02:49

reservada led Y qué pasa con con Blue

play02:53

web si nosotros ponemos ahora un const

play02:55

de cero también va a pasar el mismo

play02:58

error Por lo tanto tanto led como cons

play03:01

no permiten declarar dos veces la misma

play03:04

variable pero aquí viene el juego

play03:06

verdadero Qué pasa si nosotros hacemos

play03:09

un scope un ambiente un ámbito local por

play03:13

ejemplo si ahora hago otra constante con

play03:16

contador igual a 100 qué Creen ustedes

play03:19

que me va a pintar Contador se va a

play03:22

reventar mi sistema Bueno ahí es el

play03:23

medio spoiler ahí está el 100 qué está

play03:26

pasando acá que en un ambiente en un

play03:29

scope en un ámbito Nosotros sí podemos

play03:32

volver a declarar variables con cons o

play03:36

leds el ámbito siempre va a buscar la

play03:39

variable más cercana lo primero que va a

play03:42

buscar es en su propio ámbito por lo

play03:44

tanto llega contador que es 100 y hasta

play03:46

ahí nomás se queda este console en

play03:49

cambio Si nosotros dejamos comentado

play03:51

este contador fíjense que ahora va a ser

play03:53

cero porque es cero porque en este

play03:56

ámbito en este scope en este ambiente

play03:58

como te quiera decirle no existe

play04:00

contador por lo tanto sube un nuevo

play04:03

nivel y llega hasta contador que es cero

play04:05

Esto es lo mismo por si acaso con leds

play04:10

los dos tienen un alcance viven en un

play04:14

scope si ahora ustedes quieren seguir

play04:15

jugando con otro If pueden hacer todos

play04:18

los anidados que quieran para ir jugando

play04:20

fíjense que siempre va a buscar lo más

play04:23

cercano que su propio ambiente su propio

play04:25

scope y si no existiera va a ir subiendo

play04:28

En este caso llegamos a 100 y si no

play04:30

existe el 100 va a llegar hasta el

play04:31

ámbito global Pero hay una pequeña

play04:33

diferencia que sí desde el ámbito local

play04:36

podemos empezar a subir pero no al

play04:40

contrario Qué pasaría si no existe esa

play04:43

variable global o en el ámbito global

play04:45

pero sí existe en un ámbito distinto o

play04:48

local que sería este segundo If si

play04:50

nosotros guardamos miren que acá me va a

play04:53

decir que contador no existe por lo

play04:55

tanto la regla es que desde adentro

play04:57

hacia afuera si podemos pero desde

play05:01

afuera hacia adentro no podemos acceder

play05:03

a esas variables tanto con led o con por

play05:07

si acaso es el mismo problema porque

play05:09

esta variable no está declarada esto es

play05:11

maravilloso si esto te parece muy

play05:13

difícil no te preocupes porque te voy a

play05:15

dejar en la descripción de este vídeo un

play05:17

curso de javascript con más de 16 horas

play05:20

de estudio donde repasamos todos estos

play05:22

conceptos y con prácticas este mini

play05:25

curso está hecho para que ustedes vean

play05:27

las definiciones y obviamente después se

play05:29

puedan pasar a View a react iceberg a

play05:32

angular a lo que ustedes quieran para

play05:34

finalizar vamos a ver el mismo ejemplo

play05:35

con bar voy a guardar y ahora tenemos

play05:38

una asquerosidad porque sí bar todo lo

play05:41

que ustedes declaren con bar siempre va

play05:43

a ser global por lo tanto podemos

play05:44

acceder a él sin ningún problema incluso

play05:48

podemos acceder a él si la variable está

play05:50

declarada después Aquí bueno no me sale

play05:53

el 200 me salen de final pero tampoco

play05:55

explota mi sitio web se recuerdan que

play05:57

con con o con leds esto debería explotar

play06:00

porque explota porque la variable

play06:02

todavía no está siendo declarada y yo

play06:05

estoy tratando de acceder a ella Pero en

play06:07

cambio con bar si podemos acceder a esa

play06:11

variable que en este momento es and The

play06:12

Final pero por lo menos no explota

play06:14

nuestro sitio web ojo que esto no es una

play06:16

ventaja Este es un término que nosotros

play06:18

también analizamos que se llama Hosting

play06:20

vuelvo a repetir en la descripción del

play06:22

video te dejo ese cursazo hemos revisado

play06:24

de las principales diferencias entre

play06:26

cons y LED y déjame en los comentarios

play06:28

si tú ocuparías bar en alguna situación

play06:30

a mí todavía no se me ocurre Pero puede

play06:32

ser que más de uno tenga alguna idea de

play06:35

cómo utilizar bar en una aplicación Ay

play06:37

ay ay voy a estar atento a tu comentario

play06:39

Muchas gracias a todas las personas que

play06:41

han adquirido los cursos

play06:43

tanto de react como de View vamos pasito

play06:47

a pasito viendo las definiciones y

play06:49

siempre con la buena onda que a ustedes

play06:51

los caracteriza nos vemos como siempre

play06:53

en el siguiente vídeo tutorial

play06:57

Está bueno está bueno Y si tiró el

play07:00

ejemplo con los objetos no mala idea no

play07:03

porque todavía no vemos los objetos

play07:04

ya no lo vemos entonces más adelante

play07:07

pero no me reta

play07:10

para todos los que se quedaron hasta el

play07:12

final y se quedaron con la duda de que

play07:14

quiera esa cosa de que se estaba mutando

play07:16

algo y es que nosotros podemos trabajar

play07:18

también con objeto eso lo vamos a ver un

play07:20

poquito más adelante pero imaginémonos

play07:22

que hacemos un objeto llamado persona y

play07:25

esa persona va a tener un nombre que en

play07:28

este caso se va a llamar Blue web esa

play07:30

persona también va a tener un apellido

play07:32

que en este caso va a decir suscríbete

play07:35

que apellido más raro suscríbete miren

play07:38

si lo pintamos en consola nosotros

play07:39

tenemos personas cierto con las reglas

play07:42

que hemos visto no podríamos nosotros

play07:45

decir la hora que persona va a ser un

play07:47

objeto o va a ser por ejemplo más

play07:49

radical un String vamos a poner aquí un

play07:53

String si yo guardo miren que me está

play07:55

saliendo el error como volvemos a

play07:57

repetir una constante no se puede

play07:59

resignar su valor Pero qué pasa si ahora

play08:03

accedemos a una propiedad que por

play08:05

ejemplo puede ser nombre y le vamos a

play08:07

colocar YouTube voy a guardar y miren

play08:10

que si pintamos en consola persona no

play08:13

explota mi sitio web y ahora dice

play08:15

suscríbete a YouTube en este momento el

play08:18

dato no ha cambiado no ha sido

play08:19

reasignado sino que estamos mutando ese

play08:23

objeto por eso les decía que tanto los

play08:26

objetos como si nosotros tuviéramos un

play08:29

array podemos utilizar incluso métodos

play08:32

que mutan el array en este caso le voy a

play08:35

empujar un nuevo elemento y va a ser una

play08:38

manzanita Y si nosotros vemos en consola

play08:40

frutas voy a guardar fíjense que sí

play08:43

existe ese elemento en cuestión el dato

play08:46

no ha cambiado el dato muta por eso con

play08:49

con lo podemos realizar era mejor

play08:51

terminar el vídeo así cierto bueno

play08:55

nos vemos

Rate This

5.0 / 5 (0 votes)

英語で要約が必要ですか?