Este artículo presenta principalmente funciones ordinarias, funciones anónimas y funciones de cierre
1. Introducción a las funciones ordinarias
1.1 Ejemplo
La copia del código es la siguiente:
function showeame (nombre) {
alerta (nombre);
}
1.2 Sobrescribir funciones con el mismo nombre en JS
En JS, las funciones no están sobrecargadas. Definen funciones con el mismo nombre de función y diferentes firmas de parámetros. Las funciones posteriores anularán las funciones anteriores. Cuando se les llama, solo se llamarán a las siguientes funciones.
La copia del código es la siguiente:
var n1 = 1;
función add (value1) {
devolver n1 + 1;
}
alerta (agregar (n1)); // Se llama la siguiente función, la salida es: 3
función add (value1, value2) {
Valor de retorno1 + 2;
}
alerta (agregar (n1)); // Salida: 3
1.3 Argumentos Objeto
Los argumentos son similares a los parámetros de C#, los parámetros de la variable operativa: el número de parámetros pasados en función es mayor que el número de parámetros en el momento de la definición.
La copia del código es la siguiente:
function showsames (nombre) {
alerta (nombre); // Zhang San
para (var i = 0; i <arguments.length; i ++) {
alerta (argumentos [i]); // zhang san, li si, wang wu
}
}
showames ('zhang san', 'li si', 'wang wu');
1.4 El valor de rango predeterminado de la función
Si la función no especifica el valor de retorno, la devolución predeterminada está 'indefinida'
La copia del código es la siguiente:
función showmsg () {
}
alerta (showmsg ()); // Salida: indefinido
2. Funciones anónimas
2.1 Funciones anónimas variables
2.1.1 Descripción
Las funciones se pueden asignar a variables y eventos.
2.1.2 Ejemplo
La copia del código es la siguiente:
// Función anónima variable, el lado izquierdo puede ser variables, eventos, etc.
var anyonymousNormal = function (p1, p2) {
alerta (P1+P2);
}
Anónimo anónimo (3,6); // Salida 9
2.1.3 Escenarios aplicables
① Evite la contaminación del nombre de la función. Si declara una función con un nombre primero y luego la asigna a una variable o evento, causará abuso del nombre de la función.
2.2 Función anónima sin nombre
2.2.1 Descripción
Es decir, cuando se declara la función, se siguen los parámetros. Cuando JS sintaxis analiza esta función, el código interior se ejecuta inmediatamente.
2.2.2 Ejemplo
La copia del código es la siguiente:
(función (p1) {
alerta (P1);
}) (1);
2.2.3 Escenarios aplicables
① Solo ejecute una vez. Si el navegador se carga, solo necesita ejecutar funciones que no se ejecutan más adelante.
3. Función de cierre
3.1 Descripción
Suponga que la función A declara una función B internamente, la función B se refiere a una variable que no sea la función B, y el valor de retorno de la función A es una referencia a la función B. Entonces la función B es una función de cierre.
3.2 Ejemplo
3.2.1 Ejemplo 1: Referencias globales y referencias locales
La copia del código es la siguiente:
function funa () {
var i = 0;
función funb () {// Función de cierre Funb
i ++;
alerta (i)
}
devolver funb;
}
var allShowa = Funa (); // Referencia variable global: salida acumulativa 1, 2, 3, 4, etc.
función partshowa () {
var showa = funa (); // Referencia de variable local: solo salida 1
showa ();
}
Allshowa es una variable global que hace referencia a la función FUNA. Repita AllShowa () y emitirá valores acumulados como 1, 2, 3, 4.
Ejecute la función PartShowa (), porque solo la variable local showA se declara internamente para hacer referencia a FUNA. Después de la ejecución, los recursos ocupados por Showa se lanzan debido a la relación de alcance.
La clave del cierre es el alcance: los recursos ocupados por las variables globales solo se lanzarán después de que se cambie la página o el navegador esté cerrado. Cuando var AllShowa = Funa (), es equivalente a Allshowa que se refiere a Funb (), de modo que los recursos en Funb () no sean reciclados por GC, por lo que los recursos en FUNA () no lo serán.
3.2.2 Ejemplo 2: Función de cierre parametrado
La copia del código es la siguiente:
function funa (arg1, arg2) {
var i = 0;
función funb (step) {
i = i + paso;
alerta (i)
}
devolver funb;
}
var allShowa = FUNA (2, 3); // La llamada es Funa Arg1 = 2, Arg2 = 3
AllShowa (1); // La llamada es FUNB Step = 1, salida 1
AllShowa (3); // La llamada es funb setp = 3, salida 4
3.2.3 Ejemplo 3: Compartir variable en la función principal FUNA
La copia del código es la siguiente:
function funa () {
var i = 0;
función funb () {
i ++;
alerta (i)
}
allShowC = function () {// Allshowc se refiere a funciones anónimas y comparte variable I con funb
i ++;
alerta (i)
}
devolver funb;
}
var allShowa = Funa ();
var allShowb = Funa (); // Allshowb References FUNA, AllShowc ReembinDs internamente, y comparte la variable I con AllShowb
3.3 Escenarios aplicables
① Asegure la seguridad de las variables interiores FUNA, porque el externo no puede acceder directamente a las variables FUNA.
¿Tiene alguna idea sobre la función de la función de JavaScript? Si tiene alguna pregunta, déjame un mensaje.