Introduction
JavaScript est une langue interprétée et son exécution est de haut en bas. Cependant, chaque navigateur a de légères différences dans sa compréhension de [de haut en bas], et en amont et en aval du code, c'est-à-dire que le flux du programme est crucial pour le bon fonctionnement du programme. Il est donc nécessaire de comprendre l'ordre d'exécution de JS en profondeur. À cette fin, j'ai conçu les huit expériences suivantes pour obtenir les résultats les plus précis.
expérience
La copie de code est la suivante:
<script type = "text / javascript">
// Expérience 1:
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1);
//résultat:
// [t (a, b)] a: 1, b: non défini
// Expérience 2:
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
t (1);
//résultat:
// [t (a)] a: 1
// Expérience 3:
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1, 2);
//résultat:
// [t (a, b)] a: 1, b: 2
// Expérience 4:
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
t (1, 2);
//résultat:
// [t (a)] a: 1
// Expérience 5
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
t (1);
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
//résultat:
// [t (a, b)] a: 1, b: non défini
// Expérience 6
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
t (1, 2);
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
//résultat:
// [t (a, b)] a: 1, b: 2
// Expérience 7
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1);
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
//résultat:
// [t (a)] a: 1
// Expérience 8
fonction t (a, b)
{
alert ("[t (a, b)] a:" + a + ", b:" + b);
}
t (1, 2);
fonction t (a)
{
alert ("[t (a)] a:" + a);
}
//résultat:
// [t (a)] a: 1
</cript>
post-scriptum
Lors de la définition d'une fonction JavaScript, le nom de la fonction est l'identifiant de l'objet de fonction, et le nombre de paramètres n'est que l'attribut de la fonction. Il n'est pas possible d'implémenter la surcharge en définissant des fonctions avec un nombre différent de paramètres.
Lorsque vous appelez une fonction, JS trouve l'objet de fonction correspondant via le nom de la fonction, puis correspond aux paramètres de la définition de la fonction et de la liste des paramètres d'expression dans l'ordre. Le code de fonction est exécuté.
Par conséquent, lors de la définition d'une fonction, les paramètres requis sont généralement placés à l'avant de la liste des paramètres et les paramètres facultatifs sont placés après les paramètres requis.
Choses à noter
1. Les résultats des huit expériences ci-dessus ont été obtenus en exécutant le navigateur 360 (version / noyau: 6.3.1.142/21.0.1180.89) et le navigateur Firefox (version: 27.0.1).
2. Les huit expériences ci-dessus sont indépendantes les unes des autres.