JavaScript: Perché questa dichiarazione di ritorno causa un errore di sintassi?

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

  •  12-12-2019
  •  | 
  •  

Domanda

Sto usando Apatana 3, ho modificato un po 'il formatter del codice JS un po' per lasciarlo sembrare più chiaro, sotto è il codice dopo il formato, mi dà un errore:

    copyOffset : function( index )
    {
        return
        {
            x : index, y : index
        };
    }
.

Firebug Dammi:

SyntaxError: invalid label
.

Se lo cambio su:

    copyOffset : function( index )
    {
        return{
            x : index, y : index
        };
    }
.

sarà ok, chiunque possa dirmi qual è il diff di queste due dichiarazioni di ritorno?

È stato utile?

Soluzione

La differenza è che il primo snippet è effettivamente interpretato come ...

copyOffset : function( index )
{
    return;
    {
        x : index, y : index
    };
}
.

si chiama Inserimento automatico del punto e virgola : Quando JavaScript Parser vede una dichiarazione che sembra essereCompleta, ma manca il punto e virgola, tenta di "aggiustarlo".

E sì, anche se utile a volte, può essere piuttosto fastidioso. Questo articolo spiega questa funzione JavaScript nei dettagli.

Altri suggerimenti

haha, questo è un classico;)

Javasript Breaks on

return
{
.

Perché tratta { come un nuovo blocco e inserisce implicitamente un punto e virgola:

return;
{
.

Restituisce così indefinito MrGreen

Il problema è Javasript che inserisce un punto e virgola alla fine di una riga quando l'affermazione ha senso.Poiché return può essere in piedi su proprio, JavaScript interpretalo come una dichiarazione completa e inserisce il punto e virgola, infrangendo così il codice.

In realtà, questa è la ragione, perché in JavaScript in modo sempre dovresti evitare quelle newlines e scrivere:

copyOffset : function( index ){
    return{
        x : index, y : index
    };
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top