Maison > interface Web > js tutoriel > L'insertion automatique de point-virgule de JavaScript empêche-t-elle toujours les erreurs ?

L'insertion automatique de point-virgule de JavaScript empêche-t-elle toujours les erreurs ?

Susan Sarandon
Libérer: 2024-12-23 16:05:15
original
824 Les gens l'ont consulté

Does JavaScript's Automatic Semicolon Insertion Always Prevent Errors?

Les nuances de l'insertion automatique de point-virgule de JavaScript

Clarification de l'applicabilité d'ASI

L'insertion automatique de point-virgule (ASI) est une fonctionnalité JavaScript qui insère automatiquement un point-virgule dans le code lorsqu'il est manquant et ne provoquerait pas d'erreurs syntaxiques. Cependant, cela ne s'applique qu'à des types d'instructions spécifiques :

  • Instructions vides
  • Déclarations de variables
  • Instructions d'expression
  • Instructions Do-while
  • Continuer les déclarations
  • Pause déclarations
  • Return déclarations
  • Throw déclarations

Règles ASI selon la spécification ECMAScript

La spécification ECMAScript définit trois scénarios pour ASI :

1. Jeton invalide rencontré

Un jeton incriminé non autorisé par la grammaire déclenche l'insertion d'un point-virgule si :

  • Il est séparé du jeton précédent par un saut de ligne.
  • Il est suivi de }.

2. Fin du flux d'entrée

Si le flux d'entrée se termine sans que l'analyseur puisse analyser un programme complet, un point-virgule est inséré à la fin.

3. Productions restreintes

Lorsqu'un jeton est autorisé mais appartient à une « production restreinte » (par exemple, revenir ou continuer sans saut de ligne), un point-virgule est inséré avant lui.

Exemple :

return
"something";
Copier après la connexion

est transformé à :

return;
"something";
Copier après la connexion

Exception à la règle

Cependant, il existe une exception aux règles. Si l'ASI aboutit à une SyntaxError, elle n'est pas insérée. Par exemple, dans le code suivant :

if (x)
return
  y;
Copier après la connexion

ASI le transformerait en :

if (x)
return;
y;
Copier après la connexion

Cela provoquerait une SyntaxError car y n'est pas une instruction valide en soi.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal