Si vous ne pouvez pas comprendre le mécanisme de course de la langue javascript, ou simplement en termes, vous ne pouvez pas maîtriser l'ordre d'exécution de JavaScript, alors vous êtes comme un fût qui ne peut pas contrôler un cheval de mille milles, permettant au cheval de mille milles de s'échapper et de courir autour.
Alors, comment JavaScript Parse? Quelle est son ordre d'exécution? Avant de les comprendre, comprenons d'abord quelques termes importants:
1. Bloc de code
Un bloc de code dans JavaScript fait référence à un segment de code divisé par la balise <cript>. Par exemple:
La copie de code est la suivante:
<script type = "text / javascript">
alert ("Ceci est le bloc de code un");
</cript>
<script type = "text / javascript">
alert ("Ceci est le bloc de code deux");
</cript>
JS est compilé et exécuté en fonction des blocs de code. Qu'est-ce que cela signifie?
La copie de code est la suivante:
<script type = "text / javascript">
alert (str); // parce que Str n'est pas défini, le navigateur aura une erreur et les suivants ne peuvent pas fonctionner
alert ("je suis code bloc un"); // ne pas fonctionner ici
var test = "Je suis une variable de bloc de code";
</cript>
<script type = "text / javascript">
alerte ("je suis le bloc de code deux");
alerte (test); // popt "Je suis une variable de bloc de code"
</cript>
Dans le code ci-dessus, une erreur est rapportée dans le bloc de code, mais il n'affecte pas l'exécution du bloc de code deux. - Partage de blocage.
2. Fonctions déclaratives et fonctions d'attribution
Les définitions de fonction dans JS sont divisées en deux types: fonctions déclaratives et fonctions d'affectation.
La copie de code est la suivante:
<script type = "text / javascript">
fonction fn () {// Fonction déclarée
}
var fn = fonction {// Fonction d'attribution
}
</cript>
La différence entre une fonction déclarative et une fonction d'attribution est que pendant la période de précompilation de JS, la fonction déclarative sera extraite en premier, puis le code JS sera exécuté dans l'ordre.
3. Période de précompilation et période d'exécution
En fait, le processus d'analyse de JS est divisé en deux étapes: période de précompilation (prétraitement) et période d'exécution.
Pendant la période de précompilation, JS traitera toutes les variables et fonctions déclarées dans ce bloc de code (similaire à la compilation de C), mais il convient de noter qu'à l'heure actuelle, la seule chose qui gère les fonctions est déclarative, et les variables sont déclaré uniquement.
La copie de code est la suivante:
<script type = "text / javascript">
Fn (); Résultat d'exécution //
fonction fn () {// fonction 1
alert ("La fonction 1 a été exécutée");
}
fonction fn () {// fonction 2
alert ("La fonction 2 a été exécutée");
}
</cript>
<script type = "text / javascript">
FN ();
fonction fn () {// Fonction déclarée
alert ("fonction déclarée exécutée");
}
var fn = fonction () {// Fonction d'attribution
alert ("Exécuter la fonction d'attribution");
}
</cript>
// Code Block One
<script type = "text / javascript">
alert (str); // l'erreur du navigateur rapporté, mais la fenêtre d'information n'a pas appartenu
</cript>
// Bloc de code deux
<script type = "text / javascript">
Alerte (str); // fenêtre popt-up "Undefined"
var str = "aaa";
</cript>
// JS déclare la variable pendant la période de prétraitement, mais n'initialise pas et n'attribue pas de valeurs, de sorte que la variable dans le bloc de code 2 n'est pas accélérée, tandis que la variable dans le code un n'existe pas du tout, donc le navigateur signale une erreur.
Après avoir compris les termes ci-dessus, je pense que vous avez une impression approximative du mécanisme de course de JS.
La copie de code est la suivante:
<script type = "text / javascript">
FN ();
</cript>
<script type = "text / javascript">
fonction fn () {// fonction 1
alert ("La fonction 1 a été exécutée");
}
</cript>
Pourquoi le navigateur signale-t-il une erreur lors de l'exécution du code ci-dessus? La fonction de déclaration n'est-elle pas traitée pendant la période de prétraitement? En fait, il s'agit d'un point de compréhension. Code.
Maintenant, résumons et organisons:
La copie de code est la suivante:
Étape 1. Lisez le premier bloc de code.
Étape 2. Analyse de syntaxe.
Étape 3. Faites le «traitement de précompilation» des variables VAR et des définitions de fonction (il ne sera jamais déclaré par erreur car seule la déclaration correcte est analysée).
Étape 4. Exécutez le segment de code, et s'il y a une erreur, une erreur sera signalée (comme la variable n'est pas définie).
Étape 5. S'il existe un autre segment de code, lisez le segment de code suivant et répétez l'étape2.
Étape 6.
Selon l'ordre d'exécution des flux de documents HTML, le code JS qui doit être exécuté avant le rendu des éléments de la page doit être placé dans le bloc <cript> avant <body>, et le JS après le chargement des éléments de la page doit être placé Dans le </body> après l'élément, l'événement Onload de la balise corporelle est exécuté à la fin.
La copie de code est la suivante:
<script type = "text / javascript">
alerte ("premier");
fonction fn () {
alert ("troisième");
}
</cript>
<body onload = "fn ()">
</docy>
<script type = "text / javascript">
alerte ("second");
</cript>