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