Un artículo anterior mencionó varias formas de llamar a las funciones anónimas. Este artículo analiza las diversas formas de llamar a las funciones con nombre.
1. ()
La función más utilizada es llamar/ejecutar una función:
La copia del código es la siguiente:
// sin función de parámetro Fun1
función divertida1 () {
alerta ('me llamo');
}
divertir1 ();
// Función de parámetros Fun2
función divertida2 (param) {
alerta (param);
}
Fun2 ('me llamo');
Después de ECMAScript3, llame y aplique la función, hay dos tipos de funciones.
2. Llame
La copia del código es la siguiente:
// sin función de parámetro Fun1
función divertida1 () {
alerta ('me llamo');
}
diversión1.call (nulo);
// Función de parámetros Fun2
función divertida2 (param) {
alerta (param);
}
Fun2.call (nulo, 'me llamo')
3. Aplicar
La copia del código es la siguiente:
// sin función de parámetro Fun1
función divertida1 () {
alerta ('me llamo');
}
diversión1.apply (nulo);
// Función de parámetros Fun2
función divertida2 (param) {
alerta (param);
}
Fun2.apply (nulo, ['me llamo'])
Aunque la llamada, Aplicar se puede usar exclusivamente para llamar/ejecutar funciones, se utilizan más para cambiar el contexto de la ejecución de funciones.
4. Nuevo (este método no se recomienda)
La copia del código es la siguiente:
// sin función de parámetro Fun1
función divertida1 () {
alerta ('me llamo');
}
nuevo Fun1 ();
// Función de parámetros Fun2
función divertida2 (param) {
alerta (param);
}
NUEVO FUN2 ('Me llamo')
La esencia de la nueva es crear/construir una instancia de una clase. El Fun1 y Fun2 definidos aquí obviamente no son una clase (no esto, sin prototipo). Pero ambas funciones se ejecutaron. Este es un efecto secundario de nuevo.
Del método de llamada anterior, no hay diferencia en los resultados de ejecución de los cuatro métodos. Pero si la función tiene un valor de retorno, puede decepcionarle al llamarlo de la nueva manera.
La copia del código es la siguiente:
// Función divertida con valor de retorno
function divert () {
alerta ('me llamo');
regresar "Jack";
}
var c = new Fun ();
alerta (c); // [objeto objeto], ¿por qué no "Jack"?
Cambiarlo a esto
La copia del código es la siguiente:
// Función divertida con valor de retorno
function divert () {
alerta ('me llamo');
return {nombre: 'Jack'};
}
var c = new Fun ();
alerta (c.name); // Jack, regresó normalmente
Para resumir: al llamar a una función de una manera nueva. Si hay un valor de retorno, el valor no se devolverá cuando el valor de retorno sea un tipo incorporado (tipo base) de JavaScript, como String (String (String), Number (Number), Boolean, etc.; Cuando el valor de retorno es un tipo de objeto, el objeto, la función y la matriz se devolverán directamente.
Cuando el valor de retorno es un tipo incorporado (tipo base), ¿qué devuelve exactamente la nueva diversión ()? El próximo artículo discutirá los detalles de las nuevas llamadas de método.