O escopo é um dos conceitos mais importantes de JavaScript. Se você deseja aprender bem o JavaScript, precisa entender os princípios de trabalho da cadeia de escopo e escopo JavaScript. O artigo de hoje apresenta uma explicação detalhada dos exemplos de escopo JavaScript, na esperança de ajudar todos a aprender melhor o JavaScript.
Qualquer linguagem de programação tem o conceito de escopo. Simplificando, o escopo é o escopo acessível de variáveis e funções, ou seja, o escopo controla a visibilidade e o ciclo de vida de variáveis e funções. Em JavaScript, o escopo das variáveis é global e local.
1. Nenhum escopo de nível de bloco em JavaScript
Há um escopo de nível de bloco em Java ou C#, ou seja, os aparelhos também são um escopo.
public static void main () {if (1 == 1) {string name = "seven";} system.out.println (nome);} // relate um erro public static void main () {if (1 == 1) {string name = "sete";} console.writeLine (name);} // relatório um erro um erro = "sete";Sem escopo no nível de bloco em JavaScript
função main () {if (1 == 1) {var name = 'sete';} console.log (nome);} // saída: sete2. JavaScript adota o escopo da função
No JavaScript, cada função atua como um escopo e as variáveis no escopo interno não podem ser acessadas externamente.
function main () {var inerValue = 'sete';} main (); console.log (inervalue); // erro: referência não capturada: innervalue não é definido3. Cadeia de escopo JavaScript
Como cada função no JavaScript é um escopo, se uma função aninhada aparecer, uma cadeia de escopo aparecerá.
Xo = 'Alex'; função func () {var XO = "sete"; função interna () {var XO = 'alvin'; console.log (xo);} interno ();} func ();Por exemplo, o código acima aparece na cadeia de escopo composta por três escopos. Se a corrente do escopo aparecer, o pedido aparecerá ao procurar variáveis. Para o exemplo acima:
Quando o Console.log (XO) é executado, sua ordem de pesquisa é pesquisar de dentro para fora, de acordo com a prioridade da cadeia de escopo. Se a camada interna não existir, ela gradualmente procurará até que nenhuma exceção seja encontrada.
4. A cadeia de escopo de JavaScript foi criada antes da execução
O escopo do JavaScript foi criado antes de ser executado. Quando é executado no futuro, você só precisa pesquisar de acordo com a cadeia do escopo.
Exemplo 1:
Xo = 'Alex'; função func () {var XO = "sete"; função interna () {console.log (xo);} retornar interna;} var ret = func (); ret (); // resultado de saída: sete: seteO código acima já existe antes que a função seja chamada:
• Escopo global-> Escopo de função func-> Escopo de função interna
Ao executar [ret ();], uma vez que se refere à função interna, a cadeia de escopo dessa função foi definida como: escopo global -> Escopo da função func -> Escopo de função interna; portanto, ao executar [ret ();], as variáveis serão encontradas com base na cadeia de escopo existente.
Exemplo 2:
Xo = 'Alex'; função func () {var XO = "eirc"; function interna () {console.log (xo);} xo = 'sete'; retorna interno;} var ret = func (); ret (); // resultado de saída: sete: seteO código acima tem o mesmo objetivo que o Exemplo 1 e também enfatiza que a cadeia de escopo já existe antes que a função seja chamada:
• Escopo global-> Escopo de função func-> Escopo de função interna
Diferentemente, ao executar [var ret = func ();], o valor da variável XO no escopo do func foi redefinido para "sete" de "Eric", então, ao executar [ret ();] mais tarde, você só pode encontrar "sete".
Exemplo 3:
Xo = 'Alex'; <br> barra de função () {console.log (xo);} função func () {var xo = "sete"; barra de retorno;} var ret = func (); ret (); // resultado de saída: AlexNo código acima, duas cadeias de escopo foram criadas antes que a função seja executada:
• Escopo global-> Escopo de função de barra
• Escopo global-> Escopo de função Func
Ao executar [ret ();], o retiro refere -se à função da barra e a cadeia de escopo da função da barra já existe: escopo global -> escopo da função de barra; portanto, ao executar, ela será pesquisada com base na cadeia de escopo existente.
5. declaração antecipada
Se você não criar variáveis e usá -las diretamente no JavaScript, será relatado um erro:
console.log (xxoo); // Erro: Uncathed ReferenceError: XXOO não está definido
Em JavaScript, se um valor for criado sem atribuir um valor, o valor será indefinido, como:
var xxoo; console.log (xxoo); // saída: indefinido
Se isso for escrito na função:
function foo () {console.log (xo); var xo = 'sete';} foo (); // saída: indefinidoO código acima não relata um erro, mas produz a indefinição. O motivo é que, antes que as funções JavaScript sejam executadas, elas declararão todas as variáveis nelas sem atribuir valores. Portanto, é equivalente ao exemplo acima que a função já executou VAR XO quando "pré -compilado"; Portanto, a saída do código acima é indefinida.
O exposto acima é uma explicação detalhada da amostra de escopo JavaScript introduzido pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!