A função é o conceito mais comumente usado em JavaScript. A função no JavaScript é a função mais fácil de começar, mas também é o conceito mais difícil de entender e dominar em JavaScript.
1. O tipo de função é um dos tipos de referência em JS. Cada função é na verdade um objeto de instância do tipo de função, com suas próprias propriedades e métodos. Devido ao objeto funcional, o nome da função é na verdade um ponteiro para o objeto de função.
2. Métodos de definição de função comumente usados
1. Declaração da função:
Função soma (a, b) {return a+b;}2. Expressão:
var sum = function () {return a+b; }; // Observe o semicolon // a diferença entre os dois métodos: // O intérprete será o primeiro a ler a declaração de função e torná -la acessível antes da execução. Ao usar uma expressão, você deve esperar até que o analisador seja executado na linha de código onde ela está localizada antes de ser interpretada e executada (a declaração variável é avançada, enquanto o valor é deixado no lugar) alerta (soma (10, 10)); Função Sum (a, b) {retorna a+b;} // ↑ O código acima será executado normalmente, porque antes que o código seja executado, o analisador será promovido por meio da declaração de função, leia e adicione a declaração de função ao ambiente de execução e o colocará na parte superior do alerta da árvore de código (tipo de soma); alerta (soma (10, 10)); var sum = function (a, b) {return a+b;} // ↑ O motivo é que a função está localizada em uma declaração de inicialização, não em uma declaração de função, e não será avançada, mas apenas avançará a soma var e usará o operador do tipo OF para mostrar que a soma é indefinida; portanto, o erro é relatado3. O nome da função mantém apenas um ponteiro para um objeto de função; portanto, o nome da função não é diferente de outras variáveis que contêm o ponteiro do objeto, ou seja, um objeto de função pode ter vários nomes:
Função soma (a, b) {return a+b;} console.log (soma (2, 3)); // 5var anothersum = soma; // variável anothersum também aponta para o mesmo console de objeto de função.log (anothersum (4, 5)); // 9sum = nulo; // A variável soma não economiza mais ponteiros no console de objeto de função.log (anothersum (1, 3)); // a variável anothersum ainda pode ser chamada4. Por que o JS não sobrecarrega o conceito.
função add (a) {return a+3;} função add (a) {return a+5;} var resultado = add (3); // 8 // As duas funções têm o mesmo nome, e o resultado pode ser apenas a última função substituindo o anterior, para que não possa ser recarregado5. Propriedades internas de uma função: dentro da função, existem dois objetos especiais, argumentos e este
1. Argumentos:
Os argumentos são um objeto de matriz da classe, contendo todos os parâmetros da função de entrada. Este objeto tem um atributo chamado Callee. O valor da propriedade é um ponteiro, apontando para a própria função que possui o objeto de argumentos.
function foo () {var a = argumentos.callee; retornar a.ToString ();} Foo ();/*Retornar o resultado: "function sum () {var a = argumentos.callee; retorna a.toString ();}" Ou seja, dentro de uma função, argumentos.Callee refere -se à própria função. Esta função é um pouco útil quando chamada recursivamente, tem muitas falhas e é removida no modo ES5 Strict*/2. Isto: Simplificando, isso se refere ao objeto de ambiente no qual a função é executada. Isso se refere ao objeto em que o objeto é executado. É bastante complicado de expandir, apenas um artigo
//PENDÊNCIA:
3. ES5 Especifica outra propriedade de uma função: chamador. Esta propriedade de função refere -se à função que chama a função atual.
função interna () {console.log (interna.caller);} função Outer () {interna ();} Outer (); // function Outer () {Inner ();}4. Atributo de comprimento: indica o número de parâmetros que a função deseja aceitar
função add (a, b, c) {return a+b+c;} add.length; // 35. O famoso atributo de protótipo, simplesmente colocado, é um objeto, um objeto criado chamando um construtor, contendo propriedades e métodos que podem ser compartilhados por todas as instâncias de um tipo específico. É bastante complicado de expandir, apenas um artigo
//PENDÊNCIA:
6. Dois métodos da função: Call () e Apply (). Ambos chamam a função em um escopo específico e, de fato, estão definindo esse valor dentro da função.
1. CHAMADA (): Semelhante ao método Aplicar (), a diferença é que o método de recebimento de parâmetros é diferente e os parâmetros devem ser listados um por um.
2. Aplicar (): recebe dois parâmetros, um é o escopo da operação da função e o outro é uma matriz de parâmetros, que pode ser uma matriz ou um objeto de matriz da classe Argumentos.
função soma (a, b) {return a+b;} function Callsum (a, b) {return sum.apply (this, argumentos);} // o segundo parâmetro é um objeto de matriz argumentosfunção Callsum1 (a, b) {retorna soma.Apply (this, [a, b]);} // o segundo parâmetro é um console // 5 console.log (Callsum1 (3, 5)); // 83. Passando parâmetros e funções de chamada não é o local onde são usadas Call () e Apply (). A coisa realmente poderosa sobre a operação da função de expansão é o escopo de
var color = 'vermelho'; var obj = {color: 'blue'} function foo () {console.log (this.color); } foo (); //'red'foo.Call(this) ;//'red'foo.call(obj); // 'azul' // O ambiente de execução da última chamada para a função Foo () mudou, e isso aponta para o objeto OBJ, então é 'azul'A maior vantagem de usar Call
4. ES5 define um novo método: bind (), que retorna uma função, na qual esse valor estará ligado ao valor passado para a função Bind ().
var x = 9; var módulo = {x: 81, getx: function () {return this.x; }}; module.getx (); // 81Var recupexo = module.getx; recuperação (); // 9, porque neste caso, "isso" aponta para a variável global var limitex = recuperarx.bind (módulo); // vincula -a na função recuperada () no módulo para sempre, e depois chama essa função para executar sempre o limite () no objeto do módulo; // 81O acima exposto é uma análise aprofundada dos tipos de função no JavaScript introduzido pelo editor. Espero que seja útil para você. Se você quiser saber mais, preste atenção ao wulin.com.