Maison > interface Web > js tutoriel > Explication détaillée du principe et de la mise en œuvre de la pré-analyse JavaScript

Explication détaillée du principe et de la mise en œuvre de la pré-analyse JavaScript

黄舟
Libérer: 2017-03-14 15:32:23
original
1381 Les gens l'ont consulté

JavaScript est sans aucun doute un langage interprété, mais est-il uniquement analysé phrase par phrase de haut en bas au moment de l'exécution ?

En fait, un phénomène prouve que ce n'est pas le cas Grâce au "JavaScript Definitive Guide" et aux informations en ligne associées, nous avons appris que JavaScript a un comportement de "pré-analyse". Il est important de comprendre cette fonctionnalité, sinon vous risquez de rencontrer de nombreux problèmes qui ne pourront pas être résolus lors du développement réel, et même conduire à des bugs dans le programme. Afin d'analyser ce phénomène, et comme résumé de mon propre apprentissage, cet article vous guidera progressivement pour comprendre la "pré-analyse" JavaScript. Si mon opinion est fausse, veuillez me corriger.

(1) Si JavaScript n'est analysé que de haut en bas au moment de l'exécution, il est compréhensible que le code suivant puisse s'exécuter correctement, car nous définissons d'abord la fonction puis l'appelons-la.

function showMsg() 
{ 
alert('This is message'); 
} 
showMsg(); // This is message
Copier après la connexion

(2) Nous savons également que les fonctions peuvent être définies après avoir appelé le code, et que le code suivant peut également fonctionner normalement. Il semble que showMsg() ne soit toujours pas défini lorsque showMsg() est appelé, mais il fonctionne normalement, ce qui indique que JavaScript est "pré-analysé".

showMsg(); // This is message 
function showMsg() 
{ 
alert('This is message'); 
}
Copier après la connexion

(3) Ce qui précède est un exemple de fonction, et voici un autre exemple de variable ordinaire. Lorsque l'exemple suivant est exécuté, undefined apparaîtra, indiquant que msg dans la première phrase a été défini, mais n'a pas été initialisé. C'est la même chose que var msg; alert(msg);. Si vous commentez la deuxième phrase ci-dessous, une erreur « le message n'est pas défini » sera signalée. Cela indique également que JavaScript est « pré-analysé ».

alert(msg); //undefined 
var msg='This is message';
Copier après la connexion
(4) Regardons un autre exemple pour approfondir notre impression de la « pré-analyse » JavaScript. Dans le code suivant, vous verrez que la boîte de dialogue qui apparaît deux fois affiche Ceci est le message 2. Pourquoi ? En fait, deux fonctions portant le même nom sont définies l'une après l'autre ci-dessous. La dernière showMsg() écrase celle définie précédemment (en JavaScript, les variables portant le même nom auront également des problèmes d'écrasement), ce qui signifie que la première showMsg() est mis au rebut. Pourquoi le deuxième appel de showMsg() n'appelle-t-il pas la fonction message 1 définie ci-dessus ? Cela prouve une fois de plus que JavaScript a un comportement de « pré-analyse ».

showMsg(); // This is message 2 
function showMsg() 
{ 
alert('This is message 1'); 
} 
showMsg(); // This is message 2 
function showMsg() 
{ 
alert('This is message 2'); 
}
Copier après la connexion
(5) La "pré-analyse" JavaScript consiste à pré-analyser des variables ou des fonctions dans l'environnement où elles peuvent être appelées (environnement d'exécution de variables). Le code suivant semble avoir vu la définition de msg avant alert(msg), mais le programme signale toujours l'erreur "msg n'est pas défini". En effet, les variables définies dans la fonction sont des variables privées de la fonction et ne peuvent pas être appelées. directement de l'extérieur. Cela indique que la "pré-analyse" JavaScript ne signifie pas analyser toutes les variables définies dans un

objet global, tel qu'une fenêtre.

function showMsg() 
{ 
var msg='This is message'; 
} 
alert(msg); // msg未定义
Copier après la connexion
(6) La "pré-analyse" JavaScript est effectuée en sections, ou en blocs
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal