JavaScript: Perché questa dichiarazione di ritorno causa un errore di sintassi?
-
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?
Soluzione
La differenza è che il primo snippet è effettivamente interpretato come ...
copyOffset : function( index )
{
return;
{
x : index, y : index
};
}
.
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
};
}
.