Les virgules bloquent Twitter sur Opera
Est-il logique d'optimiser le code JavaScript en remplaçant point virgule par virgule ?

Le , par Hinault Romaric, Responsable .NET
Hallvord Steen un développeur de l’équipe en charge du navigateur Opera a récemment constaté que le site Twitter ne fonctionnait pas avec la version finale d’Opera 12.

Le problème serait dû à une erreur lors de la compilation du code JavaScript par le compilateur du navigateur.

Après investigation, Steen s’est rendu compte que le compilateur devait analyser un énorme fichier de près de 4 129 653 caractères. Mais, le problème ne serait pas au niveau de la taille du fichier ou du nombre de caractères, mais plutôt dû au fait que les virgules soient utilisées en lieu et place des points virgules, rendant pratiquement les 4 millions de caractères comme une seule instruction JavaScript.

Il s’avère pourtant que l’analyseur de code d’Opera dispose d’une limite pour une instruction JavaScript. Ce qui entraine l’échec de la compilation, et ne permet pas de ce fait à Twitter de s’afficher normalement.

L’utilisation de la virgule à la place du point virgule présente-t-elle un avantage, ou permet–elle d’optimiser le code JavaScript ? Steen, pour sa part, n’encourage pas le recours à cette syntaxe. « La virgule présente des inconvénients comme la génération d’un code beaucoup plus difficile à compiler par plusieurs compilateurs JavaScript actuels » note Steen.

Cependant, les sites s’orientent de plus en plus vers cette syntaxe. « J’ai vu quelques sites utiliser des virgules à la place des points virgules dans leur code JavaScript récemment. Pourquoi cette mode, ça me dépasse », regrette Steen.

Un correctif est néanmoins disponible pour Opera, permettant de résoudre ce problème avant que cela ne soit réglé dans le compilateur JavaScript du navigateur. Le correctif permet juste d’ajouter un point virgule dans le script avant que la limite ne soit atteinte.

Utiliser le correctif

Source : Blog Hallvord Steen

Et vous ?

Qu’en pensez-vous ? Est-ce une façon d’optimiser le code JavaScript ? Si oui, est-elle logique ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Tryph Tryph - Membre émérite https://www.developpez.com
le 20/07/2012 à 17:10
une virgule comme fin d'instruction javascript...?
je suis pas un as de ce langage mais j'ai jamais entendu parler de ça...

j'ai toujours lu que cette fin d'instruction était facultative, mais qu'on pouvait la signifier sous forme d'un point-virgule, pas d'une virgule.

une façon d'optimiser le code?
là encore je vois pas ce que peut apporter une virgule par rapport à un point virgule...

j'ai hâte de lire les avis des experts
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 20/07/2012 à 17:14
Qu'une seule chose à dire:
Avatar de kohsaka kohsaka - Membre confirmé https://www.developpez.com
le 20/07/2012 à 17:18
Hipster programming ... si vraiment c'est juste une question de mode, c'est complètement débile.
Avatar de _NiTo_ _NiTo_ - Membre du Club https://www.developpez.com
le 20/07/2012 à 17:52
débile...

Un semblant d'explication que j'ai pu voir sur le blog opera: http://blog.vjeux.com/2011/javascrip...mma-trick.html

Ceci-dit, ça n'excuse pas vraiment une "ligne" instruction de 1048 virgules...
Avatar de CapFlow CapFlow - Membre actif https://www.developpez.com
le 20/07/2012 à 18:23
Comment des professionnels, d'un grand réseau social, Twitter, peuvent utiliser des virgules à la place des points-virgules ? J'espère que ça vient plutôt du minifieur, car c'est débile comme vous le dites.
Avatar de happyboon happyboon - Membre habitué https://www.developpez.com
le 20/07/2012 à 18:28
tout d'abord je voudrais savoir quels sont les avantages de remplacer le point virgule par la virgule pour la simplification ou l'optimisation du code.
Si c'est pour la forme ou la mode excusez moi mais c'est débile!
Avatar de hotcryx hotcryx - Membre expérimenté https://www.developpez.com
le 20/07/2012 à 18:39
Ils veulent ressembler au Perl, qui permet de définir ses propres délimiteurs de langage, et voilà le résultat: un code illisible
Avatar de Latios Latios - Membre à l'essai https://www.developpez.com
le 20/07/2012 à 19:34
Steen s’est rendu compte que le compilateur devait analyser un énorme fichier de près de 4 129 653 caractères.

4 Mo ? Y'a un fichier Javascript de 4 Mo sur Twitter ? :o
Avatar de poringkiller poringkiller - Membre du Club https://www.developpez.com
le 20/07/2012 à 21:02
la virgule est un opérateur javascript, toutes les sorties sauf la dernière sont ignorées, ainsi
var temp = 9,8;
console.log(temp);
écrira 8.
Ce n'est pas une mode, c'est bel et bien une manière d'optimiser le code. Certains compilateurs executent le code plus vite, comme certaines sorties sont ignorées, mais on peut voir que ça en fait planter d'autres.
Avatar de kolodz kolodz - Modérateur https://www.developpez.com
le 20/07/2012 à 21:18
C'est le principe de la minification pousser à l’extrême. Je doute que l'optimisation soit d'une performance époustouflante.
Offres d'emploi IT
Expert décisionnel business intelligence H/F
Safran - Ile de France - Évry (91090)
Architecte et intégrateur scade/simulink H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)
Architecte systèmes études & scientifiques H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil