javascript :Pourquoi cette instruction return provoque-t-elle une erreur de syntaxe ?
-
12-12-2019 - |
Question
J'utilise Apatana 3, j'ai un peu modifié le formateur de code JS pour que cela paraisse plus clair, ci-dessous le code après formatage, cela me donne une erreur :
copyOffset : function( index )
{
return
{
x : index, y : index
};
}
Firebug donne moi :
SyntaxError: invalid label
si je le change en :
copyOffset : function( index )
{
return{
x : index, y : index
};
}
tout ira bien, quelqu'un peut-il me dire quelle est la différence entre ces deux déclarations de retour ?
La solution
La différence est que le premier extrait est interprété comme ...
copyOffset : function( index )
{
return;
{
x : index, y : index
};
}
Ça s'appelle Insertion automatique de semi-fluide : lorsque JavaScript Parser voit une déclaration qui semble êtreTerminez, mais manque Semicolon, il tente de le «corriger».
Et oui, même si utile parfois, cela peut être assez gênant. Cet article explique cette fonctionnalité JavaScript dans les détails.
Autres conseils
Haha, c'est un classique ;)
Javasript s'interrompt
return
{
parce qu'il traite {
en tant que nouveau bloc et insère implicitement un point-virgule :
return;
{
renvoyant ainsi undéfini :-D
Le problème est que Javasript insère un point-virgule à la fin d'une ligne lorsque l'instruction a du sens.Depuis return
peut être autonome, Javascript l'interprète comme une instruction complète et insère le point-virgule, cassant ainsi votre code.
En fait, c'est la raison pour laquelle en Javascript, vous devez toujours éviter ces nouvelles lignes et écrire :
copyOffset : function( index ){
return{
x : index, y : index
};
}