161 votes

Que fait le premier point-virgule dans les bibliothèques JavaScript ?

Dans plusieurs bibliothèques JavaScript j'ai vu cette notation au tout début:

/**
 * Library XYZ
 */
;(function () {
  // ... and so on

Alors que je suis parfaitement à l'aise avec le "immédiatement exécuté la fonction" syntaxe

(function(){...})()

Je me demandais ce que le premier point-virgule. Tout ce que je pouvais venir, c'est qu'elle est une compagnie d'assurance. Qui est, si la bibliothèque est intégrée dans d'autres, buggy code, il sert de "la dernière instruction se termine ici au plus tard" une sorte de dos d'âne.

Il a obtenu de toute autre fonctionnalité?

144voto

porneL Points 42805

Il vous permet en toute sécurité de concaténer plusieurs fichiers JS en un seul, pour le servir plus rapidement comme une requête HTTP.

31voto

finishingmove Points 7927

La meilleure réponse a été effectivement donnée dans la question, alors je vais juste écrire qu’ici-bas pour plus de clarté :

Les principales devant immédiatement appelé fonction des expressions est là pour éviter les erreurs lors de l’ajout du fichier au cours de la concaténation d’un fichier contenant une expression pas correctement terminé par un .

Meilleure pratique consiste à mettre fin à vos expressions avec des points-virgules, mais également d’utiliser le premier point-virgule comme une mesure de protection.

27voto

Faraz Points 1480

En général, si une déclaration commence par (, [, /, + ou -, il y a une chance qu'il pourrait être interprété comme une continuation de l'instruction avant. États commençant par /, +, et - sont assez rares dans la pratique, mais les déclarations de début ( et [ ne sont pas rares à tous, au moins dans certains styles de programmation JavaScript. Certains programmeurs comme pour mettre une défensive point-virgule au début de la déclaration, de sorte qu'il continuer à fonctionner correctement même si l'instruction avant qu'il soit modifié, et un déjà point-virgule final supprimé:

var x = 0 // Semicolon omitted here
;[x,x+1,x+2].forEach(console.log) // Defensive ; keeps this statement separate

Source:

Javascript le Guide Définitif, 6e édition

4voto

YOU Points 44812

Son bon quand vous rapetisser codes js. Empêcher les erreurs de syntaxe inattendue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X