Maison  >  Article  >  interface Web  >  Introduction détaillée au fonctionnement de JavaScript

Introduction détaillée au fonctionnement de JavaScript

不言
不言avant
2019-01-15 11:26:102631parcourir

Cet article vous apporte une introduction détaillée aux principes de fonctionnement de JavaScript. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Le principe de fonctionnement de JavaScript

Savoir ce que c'est et pourquoi il en est ainsi Ici, nous parlons principalement de la compréhension du principe de fonctionnement de JavaScript.

Machine virtuelle JAVA

Nous commençons d'abord par la machine virtuelle JAVA.

Tout d'abord, parlons de pourquoi nous devons créer une machine virtuelle. Parce que les machines sont différentes, sans machine virtuelle, nous devrions compiler le code pour chaque machine, ce qui est définitivement déraisonnable. Ainsi, afin de résoudre ce problème, Java introduit le concept de machine virtuelle (VM), permettant au code compilé de s'exécuter directement sur une machine virtuelle. Quelle que soit la plate-forme cible finale, une plateforme virtuelle cohérente est construite une fois dessus. la machine virtuelle sort, vous pouvez obtenir l'effet de compiler une fois et de l'exécuter partout.

Fondamentalement, Java et C# ne sont pas des langages natifs. Le résultat compilé n'est pas une instruction machine, mais un certain format d'instruction propre. Il ne peut pas être exécuté par lui-même et nécessite un programme spécial pour l'interpréter et l'exécuter. Ce programme est ce que nous appelons une « machine virtuelle ».

Au contraire, des langages comme C, C++, Go et Rust sont des langages natifs, et les résultats compilés sont des instructions machine qui peuvent être exécutées directement par elles-mêmes. Il n'y a pas de concept de « machine virtuelle ». .

Moteur JavaScript

Ce que fait le moteur JavaScript est très similaire à la machine virtuelle JAVA

Que fait

Le moteur JS effectue principalement des analyses lexicales, grammaticales et autres sur le code JS, et compile le code en code machine exécutable via un compilateur que l'ordinateur peut exécuter.

En termes simples, son seul objectif est de lire et de compiler du code JavaScript, ce qui signifie qu'il peut analyser, interpréter, optimiser et récupérer le code JavaScript.

Processus d'exécution

Le moteur JavaScript chargera le code source, le divisera en chaînes (également appelées segmentation de mots), puis convertira ces chaînes en celles que le compilateur peut comprendre les bytecodes, puis exécuter ces bytecodes.

Le moteur V8 de Google est écrit en C++. Il peut également compiler et exécuter du code source JavaScript, gérer l'allocation de mémoire et le garbage collection. Il est conçu pour se composer de deux compilateurs, qui peuvent directement compiler le code source en code machine. Le processus d'exécution spécifique peut être vu comme les étapes suivantes :

  1. Il effectue une analyse lexicale, c'est-à-dire. , Le code source est décomposé en une série de symboles ou de chaînes ayant une signification claire.

  2. Utilisez ensuite un analyseur de syntaxe pour analyser ces symboles et les intégrer dans un arbre syntaxique.

  3. Ensuite, quatre processus JIT (Just-In-Time) commencent à participer, analysant et exécutant le bytecode généré par l'analyseur.

Relation avec ECMAScript

Pour être précis, chaque moteur JavaScript implémente une version d'ECMAScript, et JavaScript en est une branche. À mesure qu'ECMAScript continue d'évoluer, le moteur JavaScript continue de s'améliorer. La raison pour laquelle il existe tant de moteurs différents est que chacun d'eux est conçu pour fonctionner dans un navigateur Web différent, un navigateur sans tête ou un environnement d'exécution tel que Node.js.

Le moteur JavaScript est un programme, et le code JavaScript que nous écrivons est également un programme. Comment faire en sorte que le programme comprenne le programme ? Cela nécessite de définir des règles. Par exemple :

var a = 1 + 1

Le var à gauche représente une déclaration, qui déclare la variable a
Le + à droite représente l'addition de 1 et 1
Le signe égal au milieu représente Ceci est une instruction d'affectation
Le point-virgule à la fin indique la fin de cette instruction
Ce sont les règles Avec elle, il existe une norme de mesure. Le moteur JavaScript peut analyser le code JavaScript selon cette norme. Ensuite, l'ECMAScript définit ici ces règles. Parmi eux, le document ECMAScript 62 définit un ensemble complet de standards pour le langage JavaScript. Ceux-ci incluent :

var, if, else, break, continue, etc. sont des mots-clés JavaScript
abstract, int, long, etc. sont des mots réservés JavaScript
Comment compter comme un nombre et comment pour compter comme une chaîne, etc.
définit les opérateurs (+, -, >, <, etc.)
définit la syntaxe JavaScript
définit les algorithmes de traitement standard pour les expressions, les instructions, etc., comme lorsque rencontres == Comment gérer
Le moteur JavaScript standard sera implémenté selon cet ensemble de documents. Notez que la norme est soulignée ici, car il existe également des implémentations qui ne suivent pas la norme, comme le moteur JS d'IE. C'est pourquoi JavaScript présente des problèmes de compatibilité. Quant à savoir pourquoi le moteur JS d'IE n'est pas implémenté conformément aux normes, il s'agit de la guerre des navigateurs, je n'entrerai pas dans les détails ici.

Donc, en termes simples, ECMAScript définit le standard du langage, et le moteur JavaScript l'implémente en fonction de celui-ci. C'est la relation entre les deux.

RunTime

Le runtime peut être simplement compris comme l'environnement d'exécution actuel. Différents environnements fournissent différents appels d'API, tels que des objets de fenêtre dans les navigateurs Web, des API liées au DOM, etc. ., ces interfaces peuvent fournir des appels JS associés

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer