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
Susan Sarandonoriginal
2024-12-23 16:05:15816parcourir

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";

est transformé à :

return;
"something";

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;

ASI le transformerait en :

if (x)
return;
y;

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!

Déclaration:
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