Um artigo anterior mencionou várias maneiras de chamar funções anônimas. Este artigo dá uma olhada nas várias maneiras de chamar funções nomeadas.
1. ()
A função mais usada é chamar/executar uma função:
A cópia do código é a seguinte:
// Nenhuma função de parâmetro FUN1
function fun1 () {
alerta ('sou chamado');
}
fun1 ();
// Função de parâmetro FUN2
função fun2 (param) {
alerta (param);
}
fun2 ('sou chamado');
Após o ECMAScript3, ligue e aplique a função, existem dois tipos de funções.
2. Ligue
A cópia do código é a seguinte:
// Nenhuma função de parâmetro FUN1
function fun1 () {
alerta ('sou chamado');
}
FUN1.CALL (NULL);
// Função de parâmetro FUN2
função fun2 (param) {
alerta (param);
}
fun2.Call (null, 'sou chamado')
3. Aplique
A cópia do código é a seguinte:
// Nenhuma função de parâmetro FUN1
function fun1 () {
alerta ('sou chamado');
}
fun1.Apply (nulo);
// Função de parâmetro FUN2
função fun2 (param) {
alerta (param);
}
fun2.Apply (null, ['sou chamado'])
Embora a chamada, a aplicação possa ser usada exclusivamente para chamar/executar funções, elas são mais usadas para alterar o contexto da execução da função.
4. Novo (este método não é recomendado)
A cópia do código é a seguinte:
// Nenhuma função de parâmetro FUN1
function fun1 () {
alerta ('sou chamado');
}
novo fun1 ();
// Função de parâmetro FUN2
função fun2 (param) {
alerta (param);
}
novo fun2 ('sou chamado')
A essência do novo é criar/construir uma instância de uma classe. O FUR11 e o FUN2 definidos aqui obviamente não são uma classe (não, isso, sem protótipo). Mas ambas as funções foram executadas. Este é um efeito colateral do novo.
A partir do método de chamada acima, não há diferença nos resultados da execução dos quatro métodos. Mas se a função tiver um valor de retorno, poderá decepcioná -lo ao chamá -lo da nova maneira.
A cópia do código é a seguinte:
// Funciona diversão com o valor de retorno
function fun () {
alerta ('sou chamado');
retornar "Jack";
}
var c = new Fun ();
alerta (c); // [objeto], por que não "jack"?
Mude para isso
A cópia do código é a seguinte:
// Funciona diversão com o valor de retorno
function fun () {
alerta ('sou chamado');
return {name: 'Jack'};
}
var c = new Fun ();
alerta (c.name); // Jack, retornou normalmente
Para resumir: ao chamar uma função de nova maneira. Se houver um valor de retorno, o valor não será retornado quando o valor de retorno for um tipo embutido (tipo de base) de javascript, como string (string), número (número), booleano, etc.; Quando o valor de retorno é um tipo de objeto, o objeto, a função e a matriz serão retornados diretamente.
Quando o valor de retorno é um tipo embutido (tipo de base), o que exatamente o novo FUN () retorna? O próximo artigo discutirá os detalhes de novas chamadas de método.