


Problèmes avec le point-virgule suivant dans les instructions JavaScript
Ce qui suit est une introduction détaillée au problème du point-virgule après les déclarations en JavaScript à travers cet article. Cet article vous le présente en détail. Les amis qui en ont besoin peuvent s'y référer
JavaScript ajoute automatiquement des points n° de règle, il y en a 3
- lorsqu'il y a un caractère de nouvelle ligne (y compris les commentaires multilignes contenant des caractères de nouvelle ligne), et le suivant le jeton ne peut pas correspondre à la syntaxe précédente, le point-virgule sera automatiquement ajouté.
- Quand il y a }, s'il manque un point-virgule, il sera rempli
- Quand le code source du programme se termine, si un point-virgule est manquant, des points-virgules seront ajoutés.
["debugger", "try", "throw", "switch", "Identifier", "with", "return", "break", "continue", "for", "while", "do", "if", "new", "function", "(", "{", "[", "RegularExpressionLiteral", "StringLiteral", "NumericLiteral", "BooleanLiteral", "NullLiteral", "this", "!", "~", "-", "+", "--", "++", "typeof", "void", "delete", ";", "var"]
["--", "++", "IdentifierName", "]", ")", "}", "RegularExpressionLiteral", "StringLiteral", "NumericLiteral", "BooleanLiteral", "NullLiteral", "Identifier", "this", "debugger", "return", "break", "continue"]
var if do while for continue break return with switch throw try debugger ;
Ensuite, regroupons les ambiguïtés grammaticales causées par la non-ajout de points-virgules :
- La première est lorsque les deux opérateurs ++ et -- apparaissent à la fin de la ligne précédente. Lorsque la ligne suivante commence par ce qui suit, une ambiguïté de syntaxe se produira :
- fonction. delete void typeof new null true false NumericLiteral StringLiteral RegularExpressionLiteral ( [ { Identifier ++ -- + - ~ !
- Parmi eux, function et delete sont des instructions très couramment utilisées au début.
- Surtout lorsque ++ et -- sont divisés en une seule ligne séparément, car les règles de grammaire de JS stipulent que l'opération post-incrémentation ne permet pas d'insérer une nouvelle ligne au milieu, donc + + et -- seront considérés comme un pré-incrément et suivis de La ligne suivante est connectée ensemble
- La seconde est le cas où return est la fin de la ligne précédente. la ligne suivante commence par :
- function delete void typeof ( [ { Identifier ++ -- + - ~ !
- Aussi parce que les règles de La grammaire JS ne permet pas d'insérer une nouvelle ligne entre return et la valeur suivante, donc tant qu'il y a un caractère de nouvelle ligne après return, il sera considéré comme ayant un point-virgule, ce qui souvent ne répond pas aux attentes de l'utilisateur
<🎜. >
La troisième est que la ligne suivante commence par + et - Dans le cas où la ligne précédente se termine par ce qui suit, il y aura une ambiguïté grammaticale : - . -- ++ IdentifierName ] ) } RegularExpressionLiteral
- car c'est très peu de déclarations commençant par + ou -, donc cette situation n'est pas dangereuse
<🎜. >
Le quatrième est lorsque la ligne précédente se termine par break ou continue, et la ligne suivante commence par Identifier. Il y aura une ambiguïté grammaticale- Le cinquième type est lorsque la ligne suivante. commence par ( et [, et la ligne précédente se termine par ce qui suit, il y aura une ambiguïté grammaticale :
- -- ++ IdentifierName ] ) } RegularExpressionLiteral StringLiteral NumericLiteral BooleanLiteral NullLiteral Identifier this
- Cette situation est très dangereuse (cette situation doit donc être mentionnée dans l'article hax écrit avant un point-virgule), presque toutes les situations de la ligne précédente entraîneront des résultats inattendus.
- Le sixième type est que lorsque la ligne suivante commence par RegularExpressionLiteral, la fin suivante de la ligne précédente provoquera/sera interprétée comme un signe de division :
- -- ++ IdentifierName ] ) } RegularExpressionLiteral StringLiteral NumericLiteral BooleanLiteral NullLiteral Identifier this
Dans les cinq instructions return, break, continue, post-incrémentation et post-décrémentation, le caractère de nouvelle ligne peut remplacer complètement le point-virgule.
- var if do while for continue break return with switch throw try debugger Plusieurs instructions de mots clés, ainsi que des instructions vides, l'ajout ou non d'un point-virgule dans la ligne précédente a peu d'effet.
- Il est très dangereux de ne pas ajouter de point-virgule après une instruction d'expression ou une instruction d'expression de fonction, et la situation est extrêmement compliquée.
- Toute déclaration commençant par ( et [ sans point-virgule devant est extrêmement dangereuse.
Généralement, les programmeurs front-end paresseux rencontrent souvent des problèmes inexplicables
Aujourd'hui, nous n'en discuterons que. Nous en rencontrons souvent. problèmes concernant les points-virgules dans JS. Le langage JavaScript peut omettre les points-virgules car il échouera à compiler s'il manque un point-virgule après le caractère de nouvelle ligne, mais il sera ajouté par défaut. Dans certains cas spécifiques, il n'ajoutera pas de point-virgule par défaut. . Présentons maintenant brièvement quelques éléments à noter : Dans ce cas :var x = 0 [x+1,x+2,x+3].forEach(function(){ console.log(x) })
这种情况下会导致程序无法正常运行。JavaScript在解析这段代码是并不会在var x = 0后换行。
在写代码时如果以一条语句以 ”(” ,"[" ,"+" ,"-" ,"/" 开始时通常在上一条语句不会默认添加分号的。所以在这种情况下尽量保持一下这种写法,在以这些字符开始时在行首添加一个分号,这样可以保证在别人更改上面代码时不加分号也不会影响以下代码运行。
var x = 0 ;[x+1,x+2,x+3].forEach(function(){ console.log(x) })
还有就是在涉及 return break continue 这种语句时尽量不要换行
return true; JavaScript会解析为 return; true; 在涉及 ++ 和 -- 这一系列运算时 在作为表达式的前缀或后缀时在换行是会有一定的问题,如下情况: var x = 0; var y = 0; x ++ y
JavaScript会解析为
x;++y; 而不是 x++;y;
虽然在JavaScript这门语言中 “;” 是可以省略不写的,但是还是建议大家每句代码后都跟上 “;” 养成这种良好的编码习惯,毕竟在大多语言中不带 “;” 的编码适不适用的。
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

L'article discute de la création, de la publication et du maintien des bibliothèques JavaScript, en se concentrant sur la planification, le développement, les tests, la documentation et les stratégies de promotion.

L'article traite des stratégies pour optimiser les performances JavaScript dans les navigateurs, en nous concentrant sur la réduction du temps d'exécution et la minimisation de l'impact sur la vitesse de chargement de la page.

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

L'article traite du débogage efficace de JavaScript à l'aide d'outils de développeur de navigateur, de se concentrer sur la définition des points d'arrêt, de l'utilisation de la console et d'analyser les performances.

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

L'article explique comment utiliser les cartes source pour déboguer JavaScript minifiée en le mappant au code d'origine. Il discute de l'activation des cartes source, de la définition de points d'arrêt et de l'utilisation d'outils comme Chrome Devtools et WebPack.

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript
