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

Profunda compreensão da elevação de variáveis em JavaScript

A definição de função do JavaScript tem uma característica especial, ele primeiro varre todas as sentenças do corpo da função, 'eleva' todas as declarações de variáveis para o topo da função:

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

Embora seja o modo strict, a sentença var x = 'Hello, ' + y; não gera um erro, pois a variável y foi declarada posteriormente. No entanto, o alert exibe 'Hello, undefined', o que significa que o valor da variável y é 'undefined'. Isso é porque o motor JavaScript automaticamente eleva a declaração da variável y, mas não eleva a atribuição da variável y.

Para a função foo acima, o código que o motor JavaScript vê é equivalente a:

function foo() {
  var y; // Elevação da declaração da variável y
  var x = 'Hello, ' + y;
  alert(x);
  y = 'Bob';
}

Devido a essa 'característica' estranha do JavaScript, por favor, siga rigorosamente a regra 'primeiro declare todas as variáveis dentro da função' ao definir variáveis dentro da função. A prática mais comum é usar uma declaração var para declarar todas as variáveis usadas dentro da função:

function foo() {
  var
    x = 1, // x inicializado para1
    y = x + 1, // y inicializado para2
    z, i; // z e i são undefined
  // Outras sentenças:
  for (i=0; i<100; i++) {
    ...
  }
}

Aqui está o conteúdo completo do profundo entendimento da elevação de variáveis do JavaScript que o editor compartilha com vocês, esperando que possa fornecer uma referência para vocês, e esperando que todos apoiem o tutorial de gritaria.

Você pode gostar