Alcance variable de JavaScript (con ejemplos)

Tabla de contenido

En este tutorial, aprenderá sobre el alcance de las variables en JavaScript con la ayuda de ejemplos.

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

En JavaScript, una variable tiene dos tipos de alcance:

  1. Alcance global
  2. Alcance local

Alcance global

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

Veamos un ejemplo de una variable de alcance 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 ase 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 variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3

En el programa anterior, la variable a es una variable global. El valor de a es hola. Luego, 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 utilizar 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 se declaró usando let a = "hello", el programa arrojaría un error.

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

Alcance local

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

Ejemplo 1: Variable de alcance local

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

Salida

 helloWorld Uncaught ReferenceError: b no está definido

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 saludar. Por tanto, cuando intentamos acceder a la variable b fuera de la función, se produce un error.

deja que tenga alcance de bloque

La letpalabra clave tiene un alcance de bloque (solo se puede acceder a la variable en el bloque inmediato).

Ejemplo 2: variable de ámbito de bloque

 // program showing block-scoped concept // global variable let 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

 Hola mundo Hola mundo hola Uncaught ReferenceError: x no está definido

En el programa anterior, variable

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

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

Sin embargo, estamos intentando acceder a la variable c de ámbito de bloque fuera del bloque en el tercero console.log(). Esto arrojará un error.

Nota : En JavaScript, vartiene un alcance de función y un alcance de letbloque. Si intenta usar var c = 'hello';dentro de la ifinstrucción en el programa anterior, todo el programa funciona, ya que c se trata como una variable local.

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

Articulos interesantes...