Seulement avant}, après une ou plusieurs ruptures de ligne, et la fin de l'entrée du programme est insérée
C'est-à-dire que vous ne pouvez omettre que des demi-colons où une ligne, un bloc de code et un élément de programme se termine.
C'est-à-dire que vous pouvez écrire le code suivant
La copie de code est la suivante:
fonction carrée (x) {
var n = + x
retour n * n
}
Mais il ne peut pas être écrit comme le code suivant, il rapportera donc une erreur
La copie de code est la suivante:
zone de fonction (r) {r = + r return math.pi * r * r} // error
Insérer uniquement si les marques d'entrée suivantes ne peuvent pas être analysées
En d'autres termes, l'insertion du semi-colon est un mécanisme de correction d'erreur. Lisez le code et parlez
La copie de code est la suivante:
a = b
(f ())
// Il peut analyser correctement une déclaration distincte avec le prix unitaire de la déclaration suivante.
a = b (f ())
a = b
f ()
// analysé en deux déclarations indépendantes
a = bf (); // l'analyse est incorrecte
Vous devez donc faire attention au début de la déclaration suivante pour déterminer si vous pouvez légalement omettre le point-virgule.
(, [, +, - et /, alors il est préférable de ne pas omettre le point-virgule devant lui.
Donner un exemple pour illustrer
La copie de code est la suivante:
a = b
['r', 'g', 'b']. foreach (function (key) {
console.log (clé);
});
Vous pensiez à l'origine qu'il n'y avait pas d'erreur, mais l'analyser a analysé la déclaration suivante
La copie de code est la suivante:
a = b ['r', 'g', 'b']. foreach (fonction (key) {
console.log (clé);
});
Parce que la deuxième phrase commence par [, l'analyseur n'inservera pas automatiquement un point-virgule après la première instruction, il est donc analysé comme indiqué ci-dessus. B ['b'] n'est-il pas mal lors de l'analyse de l'équation ci-dessus?
Par conséquent, si les instructions commençant par les cinq caractères (, [, +, - et / sont préférées de ne pas omettre le point-virgule avant lui.
Si vous souhaitez omettre le point-virgule, un programmeur expérimenté suivra la déclaration pour s'assurer que l'analyseur analyse correctement. Comme indiqué ci-dessous
La copie de code est la suivante:
a = b
var x // Une déclaration de déclaration est spécialement ajoutée ici pour s'assurer que A = B ne sera pas analysé avec (f ())
(f ())
Donc, si vous avez besoin d'omettre un point-virgule, vous devez vérifier si la marque de début de la ligne suivante est les cinq caractères ci-dessus, ce qui a fait désactiver l'insertion automatique des demi-finales, ou vous pouvez également préfixer les cinq caractères (, [, +, et / /
L'omission des demi-colons provoque des problèmes de connexion du script
La copie de code est la suivante:
//file1.js
(fonction () {
// ...
}) ()
//file2.js
(fonction () {
// ...
}) ()
Lorsque les deux fichiers ci-dessus seront connectés, ils seront analysés comme suit
La copie de code est la suivante:
(fonction () {
// ...
})()(fonction () {
// ...
}) ()
Par conséquent, l'omission des demi-colons oblige non seulement à faire attention non seulement à la balise suivante du fichier actuel, mais aussi à n'importe quelle balise qui peut apparaître après l'instruction une fois le script connecté.
Pour éviter les erreurs d'analyse de l'analyse, vous pouvez préfixer un point-virgule supplémentaire sur chaque fichier pour protéger le script des connexions imprudentes. Si l'instruction initiale du fichier est commutée avec le caractère fragile ci-dessus, vous devez ajouter un préfixe de demi-colon supplémentaire.
Génération de restriction de syntaxe JavaScript
Production de restriction de la syntaxe JavaScript: aucune pause de ligne n'est autorisée entre deux caractères.
Donnez un exemple:
La copie de code est la suivante:
Retour
{};
Le code ci-dessus est analysé
La copie de code est la suivante:
retour;
{}
;
Les règles d'insertion des semi-colonies pour les opérations d'auto-augmentation et d'auto-décoricité
La copie de code est la suivante:
un
++
b
Pensez à ce que le code ci-dessus sera analysé? Disons la réponse, car l'opérateur d'auto-oncrément peut être utilisé à la fois comme opérateur prédéfini et un opérateur postse
La copie de code est la suivante:
un;
++ b;
Le point-virgule ne sera pas automatiquement inséré en tant que séparateur à la tête de l'instruction vide de boucle FOR.
La copie de code est la suivante:
pour (var i = 0, total = 1
I <longueur
i ++) {
Total * = i;
}
Des codes comme les ci-dessus auront des erreurs d'analyse.
Le moment où le corps de boucle vide doit également être affiché des demi-colons, sinon cela entraînera également des erreurs d'analyse.
La copie de code est la suivante:
fonction myTest () {
Tandis que (vrai)
}
Doit être écrit comme suit pour éviter les erreurs
La copie de code est la suivante:
fonction myTest () {
tandis que (vrai);
}
Résumons
1. Déduire les demi-colons uniquement avant la tag}, à la fin d'une ligne, et à la fin du programme
2. Déduire les demi-colons uniquement lorsque la marque suivante ne peut pas être analysée
3. Vous ne devez pas omettre les demi-colons avant les déclarations en commençant par (, [, +, - et / des caractères.
4. Lorsque le script est connecté, insérez explicitement les demi-colons entre les scripts
5. Vous ne devez pas envelopper la ligne avant les paramètres de retour, lancer, casser, continuer, ++ ou -
6. Un point-virgule ne peut pas être déduit comme séparateur pour l'en-tête d'une boucle pour une boucle ou une déclaration vide.