JavaScript est un langage synchrone à thread unique qui ne peut exécuter qu'une seule commande à la fois. Il passera à la ligne suivante seulement une fois que la ligne actuelle aura terminé son exécution. Cependant, JavaScript peut effectuer des opérations asynchrones à l'aide d'une boucle d'événements, de promesses, d'Async/Await et d'une file d'attente de rappel (JavaScript est synchrone par défaut).
Comment le code JavaScript est-il exécuté ?
Tout en JavaScript se produit dans un contexte d'exécution (considérez-le comme une grande boîte ou un conteneur). L'intégralité du code JavaScript est exécuté dans ce contexte d'exécution. Il comporte deux composants : le composant mémoire (l'environnement variable) et le composant code (le thread d'exécution).
Tout d'abord, un contexte d'exécution global est créé. Dans ce cadre, chaque fonction crée son propre contexte d'exécution.
Avant l'exécution d'une ligne de code, la mémoire est allouée à toutes les variables et fonctions.
Comment le code est-il exécuté après l'allocation de mémoire ?
Le moteur JavaScript parcourt à nouveau l'intégralité du programme (ligne par ligne) et exécute le code.
Regardons l'exemple suivant :
function add(a,b){ var ans = a b; console.log(ans); } var addition = add(6,5);
Dans cet exemple, un contexte d'exécution global est d'abord créé, composé de deux composants : le composant mémoire (MC) et le composant de code (CC).
Pour les fonctions, l'intégralité du code de fonction est stockée en mémoire. Pour les variables, une valeur spéciale, non définie, est stockée initialement.
Lorsque la fonction est invoquée, un autre contexte d'exécution est créé. Dans le composant mémoire, les valeurs des paramètres (a = 6, b = 5) sont stockées, tandis que les variables comme ans contiennent initialement la valeur indéfinie. Dans le composant Code, les valeurs du composant mémoire sont utilisées pour effectuer l'opération (a b = 6 5 = 11). Le résultat est ensuite imprimé sur la console.
J'espère que cette explication clarifie le concept. Si vous avez des questions ou des corrections, n'hésitez pas à les poser dans la section commentaires.
Crédits à Akshay Saini (Voir :[(https://youtu.be/iLWTnMzWtj4?si=WWMxDHM-v532vY7F)])
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3