Como declarar funções
Geralmente, existem duas maneiras de declarar uma função:
foo () {}; // declaração de função var foo = function () {}; // Expressão da funçãoA diferença
1. A expressão da função pode ser executada diretamente com colchetes depois dela
2. A declaração de função será pré-paralisada
Pré-análise
Vamos primeiro olhar para um exemplo:
foo (); // declaração de função foo_later (); // foo_later não é uma funçãofunção foo () {console.log ('declaração da função'); } var foo_later = function () {console.log ('função expressão'); }Como você pode ver, a declaração de função Foo é pré -pré -proposta e pode ser executada antes de seu próprio código; A expressão da função foo_later não pode. Para resolver esse problema, devemos primeiro descobrir o mecanismo de trabalho do analisador JavaScript.
Boost variável (guia)
O analisador JavaScript içará as variáveis e as declarações de função em seu próprio escopo. Ou seja, o exemplo acima é realmente entendido e analisado pelo analisador na seguinte forma:
function foo () {console.log ('declaração de função'); } // Todas as declarações de função são avançadas var foo_later; // Expressões de função (declarações variáveis) apenas avançam as variáveis, e a operação de atribuição não é avançada Foo (); foo_later (); foo_later = function () {console.log ('função expressão'); }Isso também pode explicar por que chamar uma função antes da expressão da função retornar um erro, porque ainda não foi atribuído, é apenas uma variável indefinida e, é claro, não pode ser executada.
Da mesma forma, também podemos tentar adivinhar a saída do seguinte código:
console.log (declarado); var declararlater = "agora está definido!"; Console.log (declarado);
Este código pode ser analisado na seguinte forma:
var declarado; console.log (declarado); // undefinedDeclaredlater = "agora está definido!"; Console.log (declarado); // Agora está definido!
A declaração variável é mencionada primeiro (portanto, não existe erro na variável), mas a atribuição não é avançada, portanto o primeiro resultado de saída é indefinido.
Deve -se notar que
Como as declarações de função são pré -pré -anoativas, não use esse método para declarar diferentes funções. Tente adivinhar a saída do exemplo a seguir:
if (true) {função aaa () {alert ('1'); }} else {função aaa () {alert ('2'); }} aaa ();Ao contrário do que esperávamos, o código aparece com "2". Isso ocorre porque as duas declarações de função são pré-agitadas antes da instrução IF ser executada; portanto, a instrução IF é inútil. Quando AAA () é chamado, a seguinte função é executada diretamente.
Resumir
Através da explicação acima, podemos resumir a seguinte:
• A declaração da variável é avançada para o topo do escopo, e a tarefa permanece em vigor
• Declaração de função de todo o "antes"
• Quando uma função é atribuída a uma variável como um valor, apenas a variável é "avançada" e a função não é "avançada".
Experimente mais praticando os exemplos acima. Além disso, como prática recomendada: as declarações variáveis devem ser colocadas na parte superior do escopo/função (o JavaScript possui apenas escopo de função!).
O artigo acima entende de maneira abrangente declarações de funções, expressões de função e melhoria variável é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.