JavaScript Scope

JavaScript Scope

Contenido original de W3Schools


El alcance (scope) determina la accesibilidad (visibilidad) de las variables. JavaScript tiene 3 tipos de alcance:

  • Alcance del bloque

  • Alcance de la función

  • Alcance global


Alcance del bloque

Antes de ES6 (2015), JavaScript solo tenía alcance global y alcance de función.

ES6 introdujo dos nuevas palabras clave importantes de JavaScript: let y const.

Estas dos palabras clave proporcionan Block Scope en JavaScript.

No se puede acceder a las variables declaradas dentro de un bloque { } desde fuera del bloque:

{
  let x = 2;
}
// x NO puede usarse aquí

Las variables declaradas con la palabra clave var NO pueden tener alcance de bloque.

Se puede acceder a las variables declaradas dentro de un bloque { } desde fuera del bloque.

Ejemplo:

{
  var x = 2;
}
// x PUEDE usarse aquí

Alcance local

Las variables declaradas dentro de una función de JavaScript se vuelven LOCALES para la función.

Ejemplo:

// el código aquí NO puede usar carName

function myFunction() {
  let carName = "Volvo";
  // el código aquí PUEDE usar carName
}

// el código aquí NO puede usar carName

Ver ejemplo

Las variables locales tienen alcance de función:

Solo se puede acceder a ellos desde dentro de la función.

Dado que las variables locales sólo se reconocen dentro de sus funciones, las variables con el mismo nombre se pueden utilizar en diferentes funciones.

Las variables locales se crean cuando se inicia una función y se eliminan cuando se completa la función.


Alcance de la función

JavaScript tiene alcance de función: cada función crea un nuevo alcance.

Las variables definidas dentro de una función no son accesibles (visibles) desde fuera de la función.

Las variables declaradas con var, let y const son bastante similares cuando se declaran dentro de una función.

Todos ellos tienen alcance de función:

function myFunction() {
  var carName = "Volvo";   // Alcance de función
}
function myFunction() {
  let carName = "Volvo";   // Alcance de función
}
function myFunction() {
  const carName = "Volvo";   // Alcance de función
}

Variables globales de JavaScript

Una variable declarada fuera de una función se vuelve GLOBAL.

Ejemplo:

let carName = "Volvo";
// el código aquí puede usar carName

function myFunction() {
// el código aquí también puede usar carName
}

Ver ejemplo

Una variable global tiene alcance global:

Todos los scripts y funciones de una página web pueden acceder a ella.


Alcance global

Las variables declaradas globalmente (fuera de cualquier función) tienen alcance global.

Se puede acceder a las variables globales desde cualquier lugar en un programa JavaScript.

Las variables declaradas con var, let y const son bastante similares cuando se declaran fuera de un bloque.

Todos ellos tienen alcance global:

var x = 2;       // Alcance global
let x = 2;       // Alcance global
const x = 2;       // Alcance global

Variables de JavaScript

En JavaScript, los objetos y funciones también son variables.

El alcance determina la accesibilidad de variables, objetos y funciones de diferentes partes del código.


Automáticamente global

Si asigna un valor a una variable que no ha sido declarada, automáticamente se convertirá en una variable GLOBAL.

Este ejemplo de código declarará una variable global carName, incluso si el valor se asigna dentro de una función.

Ejemplo:

myFunction();

// el código aquí puede usar carName

function myFunction() {
  carName = "Volvo";
}

Ver ejemplo


Modo estricto

Todos los navegadores modernos admiten la ejecución de JavaScript en "modo estricto".

Aprenderá más sobre cómo utilizar el modo estricto en un capítulo posterior de este tutorial.

En el "modo estricto", las variables no declaradas no son automáticamente globales.


Variables globales en HTML

Con JavaScript, el alcance global es el entorno de JavaScript.

En HTML, el alcance global es el objeto window.

Las variables globales definidas con la palabra clave var pertenecen al objeto window:

Ejemplo:

var carName = "Volvo";
// el código aquí puede usar window.carName

Ver ejemplo

Las variables globales definidas con la palabra clave let no pertenecen al objeto window:

Ejemplo:

let carName = "Volvo";
// el código aquí NO puede usar window.carName

Ver ejemplo


Advertencia

NO cree variables globales a menos que tenga la intención de hacerlo.

Sus variables (o funciones) globales pueden sobrescribir las variables (o funciones) de window. Cualquier función, incluido el objeto window, puede sobrescribir sus variables y funciones globales.


La vida útil de las variables de JavaScript

La vida útil de una variable JavaScript comienza cuando se declara.

Las variables de función (locales) se eliminan cuando se completa la función.

En un navegador web, las variables globales se eliminan cuando cierra la ventana (o pestaña) del navegador.


Argumentos de función

Los argumentos de función (parámetros) funcionan como variables locales dentro de funciones.


W3Schools es el sitio de desarrolladores web más grande del mundo.

Did you find this article valuable?

Support Santos Romero by becoming a sponsor. Any amount is appreciated!