De l'importance de mettre des points virgules
Vous aussi pourriez perdre un temps bête...
Je fais du Javascript depuis des années et j'ose dire que je connais bien le sujet.
Pourtant aujourd'hui j'ai perdu un temps bête sur une erreur "inédite" que j'aurais pourtant pu rencontrer 1000 fois.
J'ai l'habitude de déclarer mes fonctions sans les faire suivre d'un point virgule.
Code:
1 2 3 4
|
MaClasse.prototype.maFunction = function() {
...
} |
Ayant l'habitude de coder en C# et PHP, rajouter un ";" après la déclaration me semble juste superflu.
J'ai aussi l'habitude de tirer partie des closures.
Code:
1 2 3 4 5
|
(function() {
var inClosure = 1;
...
})() |
Le problème est quand la déclaration d'une fonction est succédé par une parenthèse ouvrante.
Code:
1 2 3 4 5 6 7 8 9
|
MaClasse.prototype.maFunction = function() {
...
}
(function() {
var inClosure = 1;
...
})() |
Car ici, pour javascript ce qui est écrit est :
Code:
1 2 3 4 5 6
|
// MaClasse.prototype.maFunction = résultat de l'appel à la fonction
MaClasse.prototype.maFunction = function() {
...
// "}" suivit par "appel avec paramètre" suivit par "appel sansparamètre"
} (function() { ... }) () |
En conclusion, il faut mettre des points virgules.
Code:
1 2 3 4 5 6 7 8 9
|
MaClasse.prototype.maFunction = function() {
...
};
(function() {
var inClosure = 1;
...
})(); |