Maison >interface Web >js tutoriel >Comment fonctionne l'insertion automatique de point-virgule (ASI) de JavaScript et comment puis-je éviter ses pièges ?

Comment fonctionne l'insertion automatique de point-virgule (ASI) de JavaScript et comment puis-je éviter ses pièges ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-24 05:42:15746parcourir

How Does JavaScript's Automatic Semicolon Insertion (ASI) Work and How Can I Avoid Its Pitfalls?

Règles d'insertion automatique de point-virgule (ASI) de JavaScript

L'ASI de JavaScript est une fonctionnalité qui peut automatiquement insérer des points-virgules à la fin de certaines instructions si elles sont manquantes. Cela peut être utile dans certains cas, mais cela peut également conduire à des bugs.

Déclarations affectées par ASI

ASI est appliqué aux types de déclarations suivants :

  • Instruction vide
  • Instruction Var
  • Expression déclaration
  • Déclaration de faire pendant
  • Déclaration de continuation
  • Déclaration de rupture
  • Déclaration de retour
  • Déclaration de lancement

Règles ASI

Les règles spécifiques à l'ASI sont les suivantes suit :

  1. Si un jeton invalide est rencontré et qui n'est pas autorisé par la grammaire, un point-virgule est inséré avant lui si :

    • Le jeton est séparé de le jeton précédent par au moins un saut de ligne.
    • Le jeton est une accolade fermante (}).
  2. Lorsque la fin du flux d'entrée de jetons est rencontrée et que l'analyseur ne peut pas analyser le flux de jetons d'entrée comme un seul programme complet, un point-virgule est automatiquement inséré à la fin du flux d'entrée.
  3. Si un jeton est autorisé par la grammaire, mais que la production est une production restreinte, un point-virgule est automatiquement inséré avant le jeton restreint jeton.

Les productions restreintes incluent :

  • Mettre à jour les expressions ( , --)
  • Instructions Continuer
  • Instructions de rupture
  • Déclarations de retour
  • Jeter déclarations
  • Fonctions fléchées
  • Expressions de rendement

Exemples

Exemple 1 :

{ 1
2 } 3

ASI va transformer ce code à :

{ 1
;2 ;} 3;

Exemple 2 :

a = b
++c

ASI transformera ce code en :

a = b;
++c;

Exemple 3 :

return
"something";

ASI va transformer ce code à :

return;
"something";

Éviter les bugs ASI

ASI peut être une fonctionnalité utile, mais elle peut également conduire à des bugs. Pour éviter les bugs ASI, il est préférable de toujours utiliser explicitement des points-virgules à la fin de chaque instruction.

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