javascript :Pourquoi cette instruction return provoque-t-elle une erreur de syntaxe ?

StackOverflow https://stackoverflow.com//questions/12687464

  •  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 ?

Était-ce utile?

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
    };
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top