Ámbito de bloque
Alcance (alcance en inglés): una parte del programa dentro de la cual la variable está disponible para su uso. Al crear el archivo .js
, creamos el alcance de todo el archivo, para crear alcance interno, debe declararlo usando corchetes { ... }
.
// primer alcance
let fruit = 'Banana'
{
// Segundo alcance
let fruit = 'Apple'
{
// Tercer alcance
let fruit = 'Lime'
}
}
En este ejemplo, creamos tres variables en diferentes ámbitos, que contienen su propia versión de la variable fruta
, por lo que no se producen errores , pero si intenta crear dos variables con el mismo nombre en el mismo ámbito , entonces ocurrirá un error 🙅.
// primer alcance
let fruit = 'Banana'
{
// Segundo alcance
let fruit = 'Apple'
let fruit = 'Lime' // Aquí se producirá un error.
}
Cuando crea varias construcciones, también crea el alcance de esta construcción, porque usa un bloque de corchetes { ... }
.
if (true) {
// Alcance de una declaración condicional
}
for (let i = 0; i > 5; i++) {
// Alcance de bucle
}
function test() {
// Alcance de la función
}
En estos ejemplos, cada construcción tiene su propio alcance.
Video
Alcance global
Cuando decimos alcance global, queremos decir que todos los demás alcances son hijos de este. El alcance global contiene variables declaradas fuera de todas las funciones⚙️ y bloques.
// Alcance global
let fruit = 'Banana'
Una variable creada en el ámbito global se denomina variable global
. La variable global se puede utilizar en todos los ámbitos secundarios.
Ámbito local
El alcance local contiene variables declaradas en una determinada parte del código. Por ejemplo, las variables creadas dentro del bucle serán locales.
for (let i = 0; i > 5; i++) {
// La variable i es local
}
Las variables locales solo pueden usarse dentro del bloque en el que fueron declaradas.
function learnJavaScript() {
function showFruit() {
// La variable fruit es local.
let fruit = 'Banana'
}
// Por lo tanto, no podemos usarlo fuera de una función.
return fruit
}
// ReferenceError: fruit is not defined
Ejemplos
Usamos dos variables con el mismo nombre en diferentes ámbitos. La función otherFruit()
devuelve la variable fruts
desde el ámbito en el que se inicializa como Lime
Si eliminamos let
de la función otherFruit()
, en lugar de crear una variable la sobrescribimos .
¿Qué sucede si tratamos de llamar a una variable local en el ámbito principal? Ocurre un error porque estamos tratando de llamar a una variable en el alcance global, que no creamos.
function learnJavaScript() {
let num
for (let i = 0; i != 5; i++) {
num += i
}
return i
}
//ReferenceError: i is not defined
Prohibición de var
En el artículo Variable le dijimos que no usaremos var
, está conectado solo con el alcance.
- Si crea dos variables con el mismo nombre en el mismo ámbito utilizando la palabra clave
let
oconst
, el intérprete nos advierte sobre esto mostrando un error.
function learnJavaScript() {
let fruit = 'Banana'
let fruit = 'Lime'
return fruit
// SyntaxError: Identifier 'fruit' has already been declared
}
Pero, si usando var
creas variables con el mismo nombre, entonces las reasignará.
El error no ocurre porque var
sobrescribió la variable fruit
- Habiendo creado una variable global usando
var
, podemos cambiarla desde el alcance local creando otra variable con el mismo nombre usandovar
. El alcance devar
está limitado a una función o un script.
- Las variables creadas con
var
se consideran declaradas desde el comienzo de la ejecución del script, independientemente de dónde se encuentre la declaración.
- Antes de ES6, JavaScript no tenía alcances de bloque. Aquellos. cualquier variable creada con la palabra clave
var
dentro del bloque también será visible fuera del bloque.
if (true) {
var fruit = 'Apple' // la variable será visible fuera de este bloque
}
console.log(fruit) // "Apple"
if (true) {
let fruit = 'Apple' // la variable no será visible fuera de este bloque
}
console.log(fruit) // "Apple"
Debido a las razones anteriores, los desarrolladores han abandonado el uso de var
¿Problemas?
Escribe en Discord o Telegram chat y suscríbete a nuestras noticias
Preguntas
¿Cuándo creamos el primer alcance?
- Al crear un bucle
- Al crear un archivo
- Al crear un bloque
Al crear una declaración condicional, ¿se crea un nuevo alcance?
true
false
¿Dónde se crea la variable local?
- Dentro del bloque en el que se declara
- Fuera de todos los bloques
Para comprender cuánto ha aprendido en esta lección, realice la prueba en aplicación móvil en nuestra escuela sobre este tema.
Enlaces
Contributors ✨
Thanks goes to these wonderful people (emoji key):
IIo3iTiv | Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 | Navernoss 🖋 🐛 🎨 |