A festa da aula há dois dias, exceto para comer, beber, se divertir e dormir um absurdo, foi tão alegre. Foi realmente melhor se divertir sozinho do que se divertir.
PS: Se você se formar ou estiver prestes a se formar, poderá se reunir se tiver tempo. Após a formatura, você terá muito pouco tempo para se reunir.
Agora tenho algum tempo para olhar algo e resumir algo. Como olhei para a parte da função JavaScript há alguns minutos, tirei um tempo para resumir as partes relevantes da função. Obviamente, algumas partes nele são meu próprio entendimento. Se houver algum entendimento errado, aponte isso.
Nesta seção, falarei com você sobre a declaração da declaração de função antecipadamente com base em meu próprio entendimento.
Nota: Em alguns lugares, também é chamado de promoção da declaração de função. As traduções são diferentes, os significados são os mesmos, apenas as compreendam. Viva o entendimento!
Antes de conversar sobre a declaração da declaração de função com antecedência, é necessário introduzir vários métodos de definição de função, com os quais a maioria dos amigos deve estar familiarizada. Se você entende ou não quer entender, role felizmente. Se você não sabe ou quer se familiarizar com isso, diminua a velocidade e comece.
Métodos para definir funções
Existem três maneiras principais de definir funções:
1. Declaração da função
2. Expressão da função Expressão da função)
3.Now Construtor de função
Entre eles, os métodos de definição de função para declarações de função e expressões de função são frequentemente usados. Esses dois métodos têm diferenças e conexões muito sutis, e o uso desses dois métodos é fácil de se confundir. Portanto, este artigo resume principalmente os pontos de conhecimento relevantes desses dois métodos de definição de função. Obviamente, o tópico deste artigo ainda é sobre funções com antecedência.
Formato típico para declarações de função:
função functionName (arg1, arg2, ...) {<!-função corpo->}Expressões de função
• Formato típico de expressões de função:
var variável = function (arg1, arg2, ...) {<!-função corpo->}Expressão da função que contém nomes (colchetes, nomes de funções):
var variável = função functionName (arg1, arg2, ...) {<!-função corpo->}Expressões de função com nomes como as acima podem ser usadas para recursão:
var variável = functionName (x) {if (x <= 1) retornar 1; else Retornar x*functionName (x);}Declaração antes do previsto
Declaração Var com antecedência
Os amigos deveriam ter ouvido falar da declaração com antecedência. Gostaria de reiterá -lo aqui, porque a declaração antecipadamente é uma diferença importante entre uma declaração de função e uma expressão de função, e é de grande significado para entendermos melhor esses dois métodos de definição de função.
Mas antes que a declaração da função seja antecipada, é necessário dizer que a declaração VAR está antecipadamente.
Primeiro, dê a conclusão antecipada da declaração VAR:
As variáveis são definidas no script ou função que as declara, e a declaração de declaração variável será avançada para o topo do script ou função. No entanto, a operação de inicialização da variável ainda é executada na instrução VAR original e o valor da variável é indefinido antes da declaração da instrução.
Três pontos simples podem ser resumidos a partir da conclusão acima:
1. A declaração variável será avançada para o topo da função;
2. Só que a declaração é avançada, a inicialização não é avançada e a inicialização ainda é inicializada no local de inicialização original;
3. O valor da variável é indefinido antes da declaração.
Vamos dar o exemplo:
var haille = 'Handsome'; function handOlTough () {alert (bonito); Var Handsome = 'Ugly'; alerta (bonito);} handometougly ();A saída correta é:
Primeira saída indefinida, depois a saída feia.
A saída de erro é:
Primeira saída bonita e depois a saída feia.
É exatamente isso que a declaração variável reproduz com antecedência. A bela variável local é definida em todo o corpo da função. A bela variável no corpo da função é suprimida. Ah, não, ele cobre a bela variável global de mesmo nome, porque a declaração variável é avançada, ou seja, o Var Handsome é avançado para o topo da função, que é assim:
var haille = 'Handsome'; function handOloughy () {Var Handsome; alerta (bonito); Var Handsome = 'Ugly'; alerta (bonito);} handometougly ();Portanto, antes do alerta (bonito), já existe uma declaração bonita, como mencionado acima
O valor da variável é indefinido antes da declaração
Portanto, a primeira saída é indefinida.
E por causa do mencionado acima:
Só que a declaração é avançada, a inicialização não é avançada, a inicialização ainda é inicializada no local de inicialização original.
Portanto, a segunda saída é feia.
Declaração de função com antecedência
No próximo, começaremos a conversar sobre a declaração da declaração de função antecipadamente em combinação com a declaração VAR.
Os amigos devem estar familiarizados com a declaração da declaração de função com antecedência, então dê um exemplo muito familiar.
Saytruth (); <!-Declaração da função-> função diztruth () {alert ('myvin é bonito.Todos sabem que o método de definição de função de declaração de função, ou seja, o primeiro método de chamada de função acima está correto e a verdade de que Myvin é bonito. pode ser emitido, porque a instrução de chamada de função pode ser colocada após a declaração da função. Para o método de definição da função de expressão da função, ou seja, o método da segunda chamada de função acima não pode gerar o resultado correto do myvin é bonito.
Combinado com o myvin acima é bonito. Por exemplo, a conclusão da declaração de função com antecedência parece fácil de entender. Não é que, ao usar o método de definição de função da declaração de função, a chamada de função pode ser colocada em qualquer lugar. Sim, você está certo, meu amigo, eu não sei como refutá -lo. Então deixe -me dizer mais algumas palavras.
Pelo que meu amigo disse
Não é apenas que, ao usar métodos de definição de função para declarações de função, as chamadas de função podem ser colocadas em algum lugar?
Pode levar a um pouco:
Quando a declaração da função é avançada, a declaração da função e o corpo da função são avançados.
e:
As declarações de função são executadas durante o período de pré-execução, ou seja, as declarações da função são executadas quando o navegador estiver pronto para executar o código. Como a declaração da função é executada durante o período de execução esperado, a declaração da função não é mais executada durante o período de execução (há pessoas que já a executaram e naturalmente não serão executadas).
Acima está um ponto.
Por que a expressão não pode ser declarada com antecedência
Vamos falar sobre mais uma coisa: por que as expressões de função não podem ser declaradas antecipadamente como declarações de função?
Felizmente, eu sei um pouco, caso contrário, realmente não sei como devo responder?
Ahem, de acordo com o meu entendimento, deixe -me explicar:
Dissemos acima da declaração do VAR com antecedência, preste atenção ao que mencionei acima:
Só que a declaração é avançada, a inicialização não é avançada, a inicialização ainda é inicializada no local de inicialização original.
Ok, vamos colocar a expressão da função aqui:
var variável = function (arg1, arg2, ...) {<!-função corpo->}As expressões de função são a maneira de escrever definições de funções em expressões (parece ser uma perda de tempo, mas isso é eficaz na interpretação e na compreensão de que as expressões de função não podem ser declaradas antecipadamente), que é atribuir um objeto de função a uma variável, por isso escrevemos a expressão de função como esta:
Var Variable = 5 Vendo isso, talvez os amigos entendam que um é atribuir um valor a uma variável, e o outro é atribuir um objeto de função a uma variável. Portanto, para expressões de função, a atribuição variável não será avançada, ou seja, função (arg1, arg2, ...) {<!-função corpo->} não será avançada, portanto a definição da função não é executada, portanto, as expressões de função não podem ser pré-declaradas como declarações de função.
Analisando a instância inicial da declaração de função
A mesma frase, a realidade é do exemplo:
Saytruth (); if (1) {function saytruth () {alert ('myvin é bonito')};} else {function saytruth () {alert ('myvin is ugly')};}Quando o navegador não lança um erro (teste -se se o navegador correspondente lançou um erro. Por que eu não testo? Posso dizer que sou preguiçoso?), O resultado da saída do navegador é feio (não quero admitir, mas a verdade é que, ahhhhh, devo ler mais se sou Ugly ?????
Por que? Obviamente, a declaração foi avançada. Como a declaração da função é avançada, a declaração da função será analisada antes da execução do código. A ordem de execução é a seguinte: First Parse function SayTruth () {alert ('myvin é bonito')} e quando a função de análise diz relaTruth () {alert ('myvin é feia')}, substituindo a declaração de função anterior. Quando chamamos a função SayTruth (), ou seja, durante a execução do código, a declaração será ignorada, então Myvin é feio será naturalmente produzido (que realidade cruel ...). Se você esquecer, pode ver o que você disse acima:
As declarações de função são executadas durante o período de pré-execução, ou seja, as declarações da função são executadas quando o navegador estiver pronto para executar o código. Como a declaração da função é executada durante o período de execução esperado, a declaração da função não é mais executada durante o período de execução (há pessoas que já a executaram e naturalmente não serão executadas).
Uma chamada fechada
Vamos falar sobre funções declaradas antecipadamente (melhorias) aqui. Espero que meu entendimento e absurdo possam ser úteis para os necessitados.
Obviamente, a prática produz conhecimento verdadeiro. O entendimento, a cognição e a aplicação das coisas ainda estão na leitura, no uso e resumo mais. Lembro -me de um ditado famoso que fala sobre declarações e práticas: "Vamos nos mover e torcer por novas declarações".
A breve análise de declarações de função e expressões de função - a declaração de declaração de função é todo o conteúdo que compartilhei com você com antecedência. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.