Ámbito de variable JavaScript

El ámbito se refiere a la disponibilidad de variables y funciones en ciertas partes del código.

En JavaScript, una variable tiene dos tipos de ámbito:

  1. Ámbito global
  2. Ámbito local

Ámbito global

Una variable declarada en la parte superior de un programa o fuera de una función se considera una variable de ámbito global.

Veamos un ejemplo de una variable de ámbito global.

// program to print a text let a = "hello";function greet () { console.log(a);}greet(); // hello

En el programa anterior, la variable a se declara en la parte superior de un programa y es una variable global. Significa que la variable a se puede usar en cualquier parte del programa.

El valor de una variable global se puede cambiar dentro de una función. Por ejemplo,

// program to show the change in global variablelet a = "hello";function greet() { a = 3;}// before the function callconsole.log(a);//after the function callgreet();console.log(a); // 3

En el programa anterior, la variable a es una variable global. El valor de a es hola. A continuación, se accede a la variable a dentro de una función y el valor cambia a 3.

Por lo tanto, el valor de a cambia después de cambiarlo dentro de la función.

Nota: Es una buena práctica evitar el uso de variables globales porque el valor de una variable global puede cambiar en diferentes áreas del programa. Puede introducir resultados desconocidos en el programa.

En JavaScript, también se puede usar una variable sin declararla. Si se usa una variable sin declararla, esa variable se convierte automáticamente en una variable global.

Por ejemplo,

function greet() { a = "hello"}greet();console.log(a); // hello

En el programa anterior, la variable a es una variable global.

Si la variable fue declarada usando let a = "hello", el programa lanzaría un error.

Nota: En JavaScript, existe "strict mode"; en el que una variable no se puede usar sin declararla. Para obtener más información sobre strict, visite JavaScript Strict.

Ámbito local

Una variable también puede tener un ámbito local, es decir, solo se puede acceder a ella dentro de una función.

Ejemplo 1: Variable de ámbito local

// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error

Salida

helloWorldUncaught ReferenceError: b is not defined

En el programa anterior, la variable a es una variable global y la variable b es una variable local. Solo se puede acceder a la variable b dentro de la función greet. Por lo tanto, cuando intentamos acceder a la variable b fuera de la función, se produce un error.

let tiene un ámbito de bloques

La palabra clave let tiene un ámbito de bloques (solo se puede acceder a la variable en el bloque inmediato).

Ejemplo 2: bloque ámbito de Variable

// program showing block-scoped concept// global variablelet a = 'Hello';function greet() { // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') { // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); } // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c);}greet();

Salida

Hello WorldHello World helloUncaught ReferenceError: x is not defined

En el programa anterior, la variable

  • a es una variable global. Se puede acceder a él en cualquier parte del programa.
  • b es una variable local. Solo se puede acceder a él dentro de la función greet.
  • c es una variable de ámbito de bloques. Solo se puede acceder a él dentro del bloque de instrucciones if.

Por lo tanto, en el programa anterior, los dos primeros console.log() funcionan sin ningún problema.

Sin embargo, estamos tratando de acceder a la variable de ámbito de bloque c fuera del bloque en la tercera console.log(). Esto lanzará un error.

Nota: En JavaScript, var tiene un ámbito de función y let tiene un ámbito de bloque. Si intenta usar var c = 'hello'; dentro de la instrucción if en el programa anterior, todo el programa funciona, ya que c se trata como una variable local.

Para obtener más información sobre let versus var, visite JavaScript let vs var.

Related Posts

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *