English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Profunda comprensión de la elevación de variables en JavaScript

La definición de función de JavaScript tiene una característica, es que primero escanea todas las instrucciones del cuerpo de la función, y 'eleva' todas las declaraciones de variables al principio de la función:

'use strict';
function foo() {
  var x = 'Hello, ' + y;
  alert(x);
  var y = 'Bob';
}
foo();

Aunque esté en modo estricto, la instrucción var x = 'Hello, ' + y; no genera un error, porque la variable y se declaró más tarde. Pero alert muestra Hello, undefined, lo que significa que el valor de la variable y es undefined. Esto es precisamente porque el motor de JavaScript eleva automáticamente la declaración de la variable y, pero no la asignación de la variable y.

Para la función foo() mencionada anteriormente, el código que ve el motor de JavaScript es equivalente a:

function foo() {
  var y; // Elevación de la declaración de variables y
  var x = 'Hello, ' + y;
  alert(x);
  y = 'Bob';
}

Debido a esta peculiar 'característica' de JavaScript, cuando definimos variables dentro de una función, debe adherirse estrictamente a la regla de 'declarar todas las variables primero dentro de la función'. La práctica más común es declarar todos los variables utilizados dentro de la función con una var:

function foo() {
  var
    x = 1, // x se inicializa como1
    y = x + 1, // y se inicializa como2
    z, i; // z y i son undefined
  // Otras instrucciones:
  for (i=0; i<100; i++) {
    ...
  }
}

La explicación profunda de la elevación de variables de js que se menciona aquí es todo lo que el editor comparte con ustedes, espero que les sea útil como referencia y que apoyen más al tutorial de gritos.

Te gustará