Dans plusieurs bibliothèques JavaScript, j'ai vu cette notation au tout début:
/**
* Library XYZ
*/
;(function () {
// ... and so on
Bien que je sois parfaitement à l'aise avec la syntaxe "fonction immédiatement exécutée"
(function(){...})()
Je me demandais à quoi sert le point-virgule. Tout ce que je pourrais trouver, c'est que c'est une assurance. C'est-à-dire que si la bibliothèque est incorporée dans un autre code bogué, elle sert de type de ralentisseur "la dernière instruction se termine ici au plus tard".
At-il une autre fonctionnalité?
javascript
syntax
Boldewyn
la source
la source
Réponses:
Il vous permet de concaténer en toute sécurité plusieurs fichiers JavaScript en un seul, pour le servir plus rapidement en une seule requête HTTP.
la source
(function(){...})()(function(){...})()
.La meilleure réponse a en fait été donnée dans la question, je vais donc l'écrire ici pour plus de clarté:
Le début
;
devant les expressions de fonction immédiatement appelées est là pour éviter les erreurs lors de l'ajout du fichier pendant la concaténation à un fichier contenant une expression qui ne se termine pas correctement par un;
.La meilleure pratique consiste à terminer vos expressions par des points-virgules, mais également à utiliser le point-virgule de début comme protection.
la source
"\n"
par";\n"
n'a aucun sens.La source:
JavaScript: The Definitive Guide, 6e édition
la source
C'est ce qu'on appelle un point-virgule principal.
Son objectif principal est de se protéger du code précédent qui n'a pas été correctement fermé, ce qui peut causer des problèmes. Un point-virgule empêchera que cela se produise. Si le code précédent n'a pas été correctement fermé, notre point-virgule corrigera cela. S'il a été correctement fermé, notre point-virgule sera inoffensif et il n'y aura pas d'effets secondaires.
la source
Une réponse en une ligne consiste à concaténer en toute sécurité plusieurs fichiers JavaScript. L'utilisation d'un point-virgule ne pose pas de problème.
Supposons que vous ayez plusieurs fonctions:
IIFE 1
IIFE 2
Lors de la concaténation, cela peut ressembler à:
Mais si vous ajoutez un point-virgule avant la fonction, cela ressemblera à:
Donc en ajoutant un
;
, il prend soin si une expression n'est pas correctement terminée.Exemple 2
Supposons que vous ayez un fichier JavaScript avec une variable:
Un autre fichier JavaScript avec une fonction:
Maintenant, lors de la concaténation, cela ressemblera à
Avec un point-virgule, cela ressemblera à:
la source
C'est bien lorsque vous réduisez le code JavaScript. Il évite les erreurs de syntaxe inattendues.
la source