Introducción
JavaScript es un lenguaje interpretado, y su ejecución es de arriba hacia abajo. Sin embargo, cada navegador tiene ligeras diferencias en su comprensión de [de arriba hacia abajo], y la corriente aguas arriba y aguas abajo del código, es decir, el flujo del programa, es crucial para el funcionamiento correcto del programa. Por lo tanto, es necesario comprender la orden de ejecución de JS en profundidad. Con este fin, diseñé los siguientes ocho experimentos para obtener los resultados más precisos.
experimento
La copia del código es la siguiente:
<script type = "text/javaScript">
// Experimento 1:
función t (a)
{
alerta ("[t (a)] a:" + a);
}
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1);
//resultado:
// [t (a, b)] a: 1, b: indefinido
// Experimento 2:
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
función t (a)
{
alerta ("[t (a)] a:" + a);
}
t (1);
//resultado:
// [t (a)] a: 1
// Experimento 3:
función t (a)
{
alerta ("[t (a)] a:" + a);
}
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1, 2);
//resultado:
// [t (a, b)] a: 1, b: 2
// Experimento 4:
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
función t (a)
{
alerta ("[t (a)] a:" + a);
}
t (1, 2);
//resultado:
// [t (a)] A: 1
// Experimento 5
función t (a)
{
alerta ("[t (a)] a:" + a);
}
t (1);
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
//resultado:
// [t (a, b)] a: 1, b: indefinido
// Experimento 6
función t (a)
{
alerta ("[t (a)] a:" + a);
}
t (1, 2);
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
//resultado:
// [t (a, b)] a: 1, b: 2
// Experimento 7
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1);
función t (a)
{
alerta ("[t (a)] a:" + a);
}
//resultado:
// [t (a)] a: 1
// Experimento 8
función t (a, b)
{
alerta ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1, 2);
función t (a)
{
alerta ("[t (a)] a:" + a);
}
//resultado:
// [t (a)] a: 1
</script>
posdata
Al definir una función JavaScript, el nombre de la función es el identificador del objeto de función, y el número de parámetros es solo el atributo de la función. No es posible implementar la sobrecarga definiendo funciones con un número diferente de parámetros.
Al llamar a una función, JS encuentra el objeto de función correspondiente a través del nombre de la función y luego coincide con los parámetros de la definición de función y la lista de parámetros de expresión en orden. Se ejecuta el código de función.
Por lo tanto, al definir una función, los parámetros requeridos generalmente se colocan en la parte delantera de la lista de parámetros y los parámetros opcionales se colocan después de los parámetros requeridos.
Cosas a tener en cuenta
1. Los resultados de los ocho experimentos anteriores se obtuvieron corriendo a través del navegador 360 (versión/núcleo: 6.3.1.142/21.0.1180.89) y el navegador Firefox (versión: 27.0.1).
2. Los ocho experimentos anteriores son independientes entre sí.